Los co­n­te­ne­do­res ocupan mucho espacio de al­ma­ce­na­mie­n­to y recursos en el sistema host. Si eliminas co­n­te­ne­do­res que ya no utilizas, podrás liberar espacio y mejorar el re­n­di­mie­n­to del sistema.

¿Cuándo debes borrar co­n­te­ne­do­res de Docker?

Los Docker Co­n­tai­ne­rs son unidades aisladas eje­cu­ta­bles que contienen apli­ca­cio­nes y sus de­pe­n­de­n­cias. Para ga­ra­n­ti­zar que el entorno Docker sea eficaz, seguro y esté or­ga­ni­za­do, es necesario borrar co­n­te­ne­do­res en de­te­r­mi­na­das si­tua­cio­nes.

En todo caso, debes borrar los co­n­te­ne­do­res después de uti­li­zar­los. Una vez que se complete una tarea o un proceso de un co­n­te­ne­dor, se re­co­mie­n­da eli­mi­nar­lo del entorno. Así se evita que los co­n­te­ne­do­res inactivos ocupen recursos y espacio de forma in­ne­ce­sa­ria.

También es aco­n­se­ja­ble eliminar los co­n­te­ne­do­res que ya no se utilicen o no se hayan ac­tua­li­za­do durante mucho tiempo. Esta acción es es­pe­cia­l­me­n­te im­po­r­ta­n­te para minimizar riesgos de seguridad, ya que los co­n­te­ne­do­res más antiguos pueden tener versiones de software vu­l­ne­ra­bles u obsoletas.

Si sospechas que un co­n­te­ne­dor no es seguro, debes borrarlo de inmediato. Lo mismo debes hacer con los co­n­te­ne­do­res que no pueden iniciarse debido a co­n­fli­c­tos u otros problemas.

Borrar uno o varios co­n­te­ne­do­res

Cuando hay co­n­te­ne­do­res in­ne­ce­sa­rios o inactivos en el host, uno de los pro­ce­di­mie­n­tos ha­bi­tua­les es eliminar uno o más co­n­te­ne­do­res.

Paso 1. Se­le­c­cio­nar los nombres o ID de los co­n­te­ne­do­res

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

docker ps -a
bash

Paso 2. Borrar co­n­te­ne­do­res

Solo debes in­tro­du­cir el comando docker rm seguido de los ID o nombres de los co­n­te­ne­do­res separados por un espacio:

docker rm container_id_or_name1 container_id_or_name2
bash

Eliminar un co­n­te­ne­dor tras su ejecución

Para eliminar au­to­má­ti­ca­me­n­te un co­n­te­ne­dor de Docker, añade el indicador --rm al ejecutar el co­n­te­ne­dor con el comando docker run. Gracias a este indicador, el co­n­te­ne­dor se borra au­to­má­ti­ca­me­n­te una vez se termina de utilizar.

docker run --rm image_name
bash

Borrar todos los co­n­te­ne­do­res que han terminado su ejecución

También es posible eliminar a la vez todos los co­n­te­ne­do­res que han terminado su ejecución fi­l­trá­n­do­los por su estado y uti­li­za­n­do el comando rm.

Paso 1. Listar co­n­te­ne­do­res te­r­mi­na­dos

Puedes filtrar la lista de co­n­te­ne­do­res mediante la opción -f status=exited para mostrar solo los co­n­te­ne­do­res te­r­mi­na­dos.

docker ps -a -f status=exited
bash

Paso 2. Eliminar co­n­te­ne­do­res te­r­mi­na­dos

Utiliza el resultado del paso anterior para obtener los ID de los co­n­te­ne­do­res te­r­mi­na­dos. Pásalos di­re­c­ta­me­n­te al comando docker rm.

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

Borrar co­n­te­ne­do­res en Docker con más de un filtro

Para eliminar co­n­te­ne­do­res uti­li­za­n­do varios filtros, puedes utilizar el comando docker ps junto con las opciones de filtro co­rre­s­po­n­die­n­tes y luego pasar los ID re­su­l­ta­n­tes al comando docker rm.

Paso 1. Listar co­n­te­ne­do­res con filtros

En primer lugar, debe in­tro­du­ci­r­se el comando docker ps con las opciones de filtro para obtener una lista con los co­n­te­ne­do­res según los filtros deseados. El estado “created” puede se­le­c­cio­nar­se junto con “exited”. El estado created hace re­fe­re­n­cia a co­n­te­ne­do­res 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 co­n­te­ne­do­res 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 co­n­te­ne­do­res según un patrón

Una forma eficaz de borrar co­n­te­ne­do­res de manera selectiva es encontrar todos los co­n­te­ne­do­res que coinciden con un patrón. Después debes eli­mi­nar­los uti­li­za­n­do awk, xargs y docker rm.

Paso 1. Encontrar todos los co­n­te­ne­do­res con un patrón

Al utilizar el comando docker ps -a en co­m­bi­na­ción con grep, obtendrás todos los co­n­te­ne­do­res cuyos nombres o etiquetas coincidan con un patrón es­pe­cí­fi­co. Por ejemplo, puedes listar los co­n­te­ne­do­res cuyos nombres empiecen por “test-”:

docker ps -a | grep "test-"
bash

Paso 2. Eliminar co­n­te­ne­do­res en Docker

Mediante el comando awk es posible se­le­c­cio­nar columnas es­pe­cí­fi­cas del resultado. En este caso, queremos extraer la primera columna que contiene los ID de los co­n­te­ne­do­res. Fi­na­l­me­n­te, puede uti­li­zar­se xargs para pasar los ID al comando docker rmi y borrar los co­n­te­ne­do­res de Docker.

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

Detener y borrar todos los co­n­te­ne­do­res de Docker

Puedes detener y eliminar todos los co­n­te­ne­do­res activos e inactivos del sistema a la vez, lo que puede ser útil al realizar una limpieza completa del entorno Docker.

Paso 1. Enumerar co­n­te­ne­do­res

Para comprobar la lista de co­n­te­ne­do­res, debes escribir el siguiente comando:

docker ps -a
bash

Paso 2. Detener co­n­te­ne­do­res

Cuando hayas realizado tu selección, reenvía el resultado a docker stop. De este modo, todos los co­n­te­ne­do­res se detendrán.

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

Paso 3. Borrar co­n­te­ne­do­res en Docker

Una vez que estén detenidos todos los co­n­te­ne­do­res, puedes eli­mi­nar­los uti­li­za­n­do el comando docker rm:

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

A di­fe­re­n­cia de los co­n­te­ne­do­res de Docker normales, los Docker volumes son me­ca­ni­s­mos con los que se pueden persistir e in­te­r­ca­m­biar datos entre los co­n­te­ne­do­res y el sistema host. En nuestra guía en­co­n­tra­rás tu­to­ria­les sobre cómo borrar Docker volumes o cómo borrar Docker Images.

Ir al menú principal