Cómo eliminar de forma eficaz imágenes, contenedores y volúmenes de Docker

Docker simplifica el empaquetado de tus aplicaciones y servicios en contenedores, haciéndolos portables y fáciles de desplegar. Sin embargo, a medida que continúas usando Docker, es común acumular muchas imágenes, contenedores y volúmenes sin uso. Estos pueden saturar tu entorno y ocupar un valioso espacio en disco.

Afortunadamente, Docker incluye diversas herramientas integradas que te ayudan a administrar y limpiar tu sistema directamente desde la línea de comandos.

En esta guía, te mostraremos el proceso para eliminar imágenes de Docker, junto con otros recursos no utilizados como contenedores y volúmenes. Siguiendo los pasos descritos, aprenderás a limpiar tu entorno Docker de forma efectiva, recuperar espacio en disco y mantener un sistema organizado.

Eliminar imágenes, contenedores, volúmenes y redes de Docker (Guía paso a paso)

Docker ofrece un único comando para eliminar todas las imágenes y otros recursos, incluyendo contenedores, volúmenes y redes que no estén etiquetados o vinculados a ningún contenedor.

docker system prune

El comando anterior limpia los recursos no utilizados de Docker eliminando contenedores, imágenes colgantes, volúmenes sin uso y redes que no estén conectadas a ningún contenedor. Por defecto, solo elimina los recursos que son seguros de borrar. Al añadir la bandera --all, se permite eliminar todas las imágenes no utilizadas, no solo las colgantes.

Para eliminar contenedores que no estén ejecutándose actualmente y todas las imágenes sin uso (incluyendo las que no son dangling), añade la bandera -a al comando.

docker system prune -a

Eliminar imágenes de Docker

Para eliminar imágenes específicas, comienza usando el comando docker images con la bandera -a. Esto mostrará todas las imágenes, incluyendo capas intermedias, lo que te permitirá identificar los IDs de las imágenes que deseas borrar.

docker images -a

Una vez identificadas las imágenes objetivo, usa su ID o etiqueta con el comando docker rmi para eliminarlas.

docker rmi Image Image

Eliminar imágenes dangling de Docker

Las imágenes de Docker están compuestas por varias capas, y las imágenes dangling son capas que no están asociadas a ninguna imagen etiquetada. Estas capas son innecesarias y ocupan espacio en disco.

Cuando construyes una imagen sin asignarle una etiqueta, aparecerá como dangling, ya que no está vinculada a ninguna imagen etiquetada. Para evitarlo, proporciona siempre una etiqueta al construir una imagen. Alternativamente, puedes añadir una etiqueta más tarde usando el comando docker tag.

Puedes encontrarlas usando el comando docker images con la bandera -f y estableciendo el valor dangling=true. Una vez confirmes que deseas eliminarlas, usa el comando docker image prune para borrar las imágenes dangling.

docker images -f dangling=true

Ahora puedes eliminarlas con el siguiente comando:

docker image prune

Eliminar todas las imágenes

Puedes listar todas las imágenes de Docker en el sistema usando el comando docker images con la bandera -a.

docker images -a

Una vez decidas eliminarlas, añade la bandera -q para mostrar solo los IDs de las imágenes, los cuales pueden pasarse al comando docker rmi para su eliminación.

docker rmi $(docker images -a -q)

Eliminar imágenes según un patrón específico

Para eliminar imágenes basadas en un patrón específico, puedes usar una combinación del comando docker images y grep para filtrarlas.

docker images -a | grep "pattern"

Una vez identificadas, usa awk para extraer sus IDs y pásalos al comando docker rmi para eliminarlas. Ten en cuenta que estas utilidades no forman parte de Docker y pueden no estar disponibles en todos los sistemas.

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

Eliminar contenedores de Docker

Para eliminar contenedores específicos, usa el comando docker ps con la bandera -a para listar todos los contenedores.

docker ps -a

El comando anterior te permitirá encontrar los nombres o IDs de los contenedores que deseas eliminar. Si quieres borrar un contenedor, puedes hacerlo con el siguiente comando:

docker rm ID_or_Name ID_or_Name

Eliminar un contenedor después de que termine

Para eliminar automáticamente un contenedor una vez que finalice, puedes usar el comando docker run --rm al crearlo. Esto asegura que el contenedor se elimine en cuanto termine su ejecución.

docker run --rm image_name

Eliminar todos los contenedores finalizados

Para encontrar contenedores, usa el comando docker ps -a, que muestra todos los contenedores sin importar su estado: created, restarting, running, paused o exited. Para centrarte en los finalizados, aplica la bandera -f y filtra por estado.

docker ps -a -f status=exited

Una vez confirmes los contenedores que deseas eliminar, usa la bandera -q para obtener sus IDs y pásalos al comando docker rm para eliminarlos.

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

Eliminar contenedores según un patrón

Puedes identificar contenedores que coincidan con un patrón combinando docker ps con grep.

docker ps -a | grep "pattern"

Una vez filtrados, usa awk y xargs para pasar sus IDs al comando docker rm. Ten en cuenta que estas utilidades no forman parte de Docker y pueden no estar disponibles en todos los sistemas.

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

Eliminar contenedores usando múltiples filtros

Puedes aplicar múltiples filtros en Docker usando la bandera filter más de una vez, cada una con un valor diferente. Esto permite listar contenedores que cumplan cualquiera de las condiciones especificadas. Por ejemplo, para eliminar todos los contenedores que estén en estado created o exited, puedes usar dos filtros separados.

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

Para eliminarlos, usa este comando:

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

Detener y eliminar todos los contenedores

Para ver todos los contenedores del sistema, usa docker ps. Añadiendo la bandera -a podrás ver todos, incluyendo los detenidos.

docker ps -a

Cuando estés listo para eliminarlos, usa la bandera -q para obtener sus IDs y pásalos a docker stop y docker rm para detenerlos y eliminarlos.

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

Eliminar volúmenes de Docker

Para encontrar los nombres de los volúmenes que deseas borrar, usa el comando docker volume ls.

docker volume ls

Después de identificarlos, puedes eliminar uno o varios usando el comando docker volume rm.

docker volume rm volume_name volume_name

Eliminar un contenedor de Docker y su volumen

Cuando creas un contenedor con un volumen sin nombre, puedes eliminar tanto el contenedor como el volumen simultáneamente usando la bandera -v. Esto solo funciona con volúmenes sin nombre.

docker rm -v container_name

Una vez eliminado el contenedor, se mostrará su ID, pero no habrá una mención directa a la eliminación del volumen. Si el volumen no tiene nombre, se eliminará silenciosamente del sistema. Sin embargo, si tiene nombre, permanecerá en el sistema.

Eliminar volúmenes dangling de Docker

Los volúmenes están diseñados para existir de forma independiente a los contenedores, por lo que cuando un contenedor se elimina, su volumen asociado no se borra automáticamente. Si un volumen ya no está vinculado a ningún contenedor, se convierte en un volumen dangling.

Para identificarlos, usa docker volume ls con un filtro que muestre solo los volúmenes dangling.

docker volume ls -f dangling=true

Una vez confirmada la lista, puedes eliminarlos todos a la vez usando docker volume prune.

docker volume prune

Conclusión

Esta guía destaca algunos de los comandos clave para eliminar imágenes, contenedores y volúmenes de Docker. Existen muchas otras opciones y banderas que puedes usar con cada comando según tus necesidades. Para una descripción detallada, consulta la documentación oficial de Docker para comandos como docker system prune, docker rmi, docker rm y docker volume rm. Si tienes tareas comunes de limpieza que te gustaría ver incluidas, puedes sugerirlas en los comentarios.

¿Buscas rendimiento fiable y soluciones escalables para tus proyectos? Descubre BlueVPS.com, que ofrece entornos simples, personalizables y dedicados con tráfico ilimitado y excelente disponibilidad en la nube. No esperes más, explora ahora y mejora el rendimiento de tu VPS.

Blog