Borrar contenedor en Docker: aprende a liberar espacio

Los contenedores ocupan mucho espacio de almacenamiento y recursos en el sistema host. Si eliminas contenedores que ya no utilizas, podrás liberar espacio y mejorar el rendimiento del sistema.

¿Cuándo debes borrar contenedores de Docker?

Los Docker Containers son unidades aisladas ejecutables que contienen aplicaciones y sus dependencias. Para garantizar que el entorno Docker sea eficaz, seguro y esté organizado, es necesario borrar contenedores en determinadas situaciones.

En todo caso, debes borrar los contenedores después de utilizarlos. Una vez que se complete una tarea o un proceso de un contenedor, se recomienda eliminarlo del entorno. Así se evita que los contenedores inactivos ocupen recursos y espacio de forma innecesaria.

También es aconsejable eliminar los contenedores que ya no se utilicen o no se hayan actualizado durante mucho tiempo. Esta acción es especialmente importante para minimizar riesgos de seguridad, ya que los contenedores más antiguos pueden tener versiones de software vulnerables u obsoletas.

Si sospechas que un contenedor no es seguro, debes borrarlo de inmediato. Lo mismo debes hacer con los contenedores que no pueden iniciarse debido a conflictos u otros problemas.

Borrar uno o varios contenedores

Cuando hay contenedores innecesarios o inactivos en el host, uno de los procedimientos habituales es eliminar uno o más contenedores.

Paso 1. Seleccionar los nombres o ID de los contenedores

En primer lugar, tienes que saber qué nombres o ID de contenedores borrar. Para obtener una lista de todos los contenedores detenidos y en ejecución, puedes utilizar el siguiente comando:

docker ps -a
bash

Paso 2. Borrar contenedores

Solo debes introducir el comando docker rm seguido de los ID o nombres de los contenedores separados por un espacio:

docker rm container_id_or_name1 container_id_or_name2
bash

Eliminar un contenedor tras su ejecución

Para eliminar automáticamente un contenedor de Docker, añade el indicador --rm al ejecutar el contenedor con el comando docker run. Gracias a este indicador, el contenedor se borra automáticamente una vez se termina de utilizar.

docker run --rm image_name
bash

Borrar todos los contenedores que han terminado su ejecución

También es posible eliminar a la vez todos los contenedores que han terminado su ejecución filtrándolos por su estado y utilizando el comando rm.

Paso 1. Listar contenedores terminados

Puedes filtrar la lista de contenedores mediante la opción -f status=exited para mostrar solo los contenedores terminados.

docker ps -a -f status=exited
bash

Paso 2. Eliminar contenedores terminados

Utiliza el resultado del paso anterior para obtener los ID de los contenedores terminados. Pásalos directamente al comando docker rm.

docker rm $(docker ps -a -f status=exited -q)
bash

Borrar contenedores en Docker con más de un filtro

Para eliminar contenedores utilizando varios filtros, puedes utilizar el comando docker ps junto con las opciones de filtro correspondientes y luego pasar los ID resultantes al comando docker rm.

Paso 1. Listar contenedores con filtros

En primer lugar, debe introducirse el comando docker ps con las opciones de filtro para obtener una lista con los contenedores según los filtros deseados. El estado “created” puede seleccionarse junto con “exited”. El estado created hace referencia a contenedores que se han creado, pero que aún no se han ejecutado.

docker ps -a -f status=exited -f status=created
bash

Paso 2. Borrar contenedores de Docker

Igual que en el ejemplo anterior, debes escribir docker rm con el resultado que hayas obtenido.

docker rm $(docker ps -a -f status=exited -f status=created -q)
bash

Eliminar contenedores según un patrón

Una forma eficaz de borrar contenedores de manera selectiva es encontrar todos los contenedores que coinciden con un patrón. Después debes eliminarlos utilizando awk, xargs y docker rm.

Paso 1. Encontrar todos los contenedores con un patrón

Al utilizar el comando docker ps -a en combinación con grep, obtendrás todos los contenedores cuyos nombres o etiquetas coincidan con un patrón específico. Por ejemplo, puedes listar los contenedores cuyos nombres empiecen por “test-”:

docker ps -a | grep "test-"
bash

Paso 2. Eliminar contenedores en Docker

Mediante el comando awk es posible seleccionar columnas específicas del resultado. En este caso, queremos extraer la primera columna que contiene los ID de los contenedores. Finalmente, puede utilizarse xargs para pasar los ID al comando docker rmi y borrar los contenedores de Docker.

docker ps -a | grep "test-" | awk '{print $1}' | xargs docker rmi
bash

Detener y borrar todos los contenedores de Docker

Puedes detener y eliminar todos los contenedores activos e inactivos del sistema a la vez, lo que puede ser útil al realizar una limpieza completa del entorno Docker.

Paso 1. Enumerar contenedores

Para comprobar la lista de contenedores, debes escribir el siguiente comando:

docker ps -a
bash

Paso 2. Detener contenedores

Cuando hayas realizado tu selección, reenvía el resultado a docker stop. De este modo, todos los contenedores se detendrán.

docker stop $(docker ps -a -q)
bash

Paso 3. Borrar contenedores en Docker

Una vez que estén detenidos todos los contenedores, puedes eliminarlos utilizando el comando docker rm:

docker rm $(docker ps -a -q)
bash

A diferencia de los contenedores de Docker normales, los Docker volumes son mecanismos con los que se pueden persistir e intercambiar datos entre los contenedores y el sistema host. En nuestra guía encontrarás tutoriales sobre cómo borrar Docker volumes o cómo borrar Docker Images.