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


Docker es una herramienta que te ayuda a empaquetar tus aplicaciones y servicios de software para que puedas ejecutarlos en diferentes plataformas. Sin embargo, al usar Docker, es fácil acumular muchas cosas innecesarias como imágenes antiguas y volúmenes de datos que ocupan espacio en tu computadora o VPS.

¡Pero no te preocupes! Docker te proporciona algunas herramientas que puedes usar para limpiar tu equipo y deshacerte de todos los archivos adicionales. Esta guía es como una hoja de trucos que te muestra algunos comandos simples que puedes usar para liberar espacio y mantener tu sistema organizado eliminando todos los archivos innecesarios de Docker.


Eliminación de imágenes, contenedores, volúmenes y redes no utilizados

Docker tiene un comando que puede eliminar cualquier recurso que esté colgando (dangling) o que no esté etiquetado o asociado a un contenedor. Este comando funciona para diferentes tipos de recursos, como imágenes, contenedores, volúmenes y redes.

docker system prune

Si deseas eliminar no solo las imágenes colgantes, sino también todas las imágenes no utilizadas y los contenedores detenidos, puedes agregar la opción -a al comando:

docker system prune -a

Eliminación de volúmenes

En esta sección te mostraremos cómo eliminar volúmenes de Docker.

Eliminar volúmenes específicos de Docker

Para eliminar uno o más volúmenes de Docker, primero usa el comando docker volume ls para encontrar el nombre o nombres del volumen que deseas eliminar. Luego, usa el comando docker volume rm con el nombre del volumen para eliminarlo.

Para listar todos los volúmenes de Docker usa este comando:

docker volume ls

Y para eliminar un volumen específico usa este comando:

docker volume rm [volume_name]

Eliminar volúmenes colgantes de Docker

Para asegurar que los volúmenes persistan más allá de la vida útil de un contenedor, no se eliminan automáticamente cuando se borra un contenedor. Por lo tanto, podrías terminar con volúmenes colgantes que ya no están asociados a ningún contenedor. Puedes identificar estos volúmenes usando docker volume ls y filtrando por volúmenes colgantes. Una vez que estés seguro de que deseas eliminarlos, puedes usar el comando docker volume prune para eliminarlos todos.

Para listar todos los volúmenes colgantes usa este comando:

docker volume ls -f dangling=true

Y para eliminarlos todos usa este comando:

docker volume prune

Eliminar contenedores y volúmenes asociados

Puedes eliminar un volumen sin nombre junto con su contenedor asociado usando la opción -v al eliminar el contenedor. Es importante tener en cuenta que esto solo funciona para volúmenes sin nombre. Cuando el contenedor se elimina con éxito, se muestra su ID, pero no se menciona la eliminación del volumen. Si el volumen no tiene nombre, se eliminará silenciosamente del sistema; si tiene un nombre, permanecerá pero sin estar asociado a un contenedor.

Para eliminar contenedores junto con sus volúmenes asociados, usa este comando:

docker rm -v [container_name]

Eliminación de imágenes de Docker

En la siguiente sección te mostraremos cómo eliminar imágenes de Docker con comandos incorporados.

Eliminar imágenes específicas de Docker

Para encontrar los IDs de las imágenes que deseas eliminar, puedes usar el comando docker images con la opción -a. Esto mostrará todas las imágenes, incluso las capas intermedias. Una vez identificadas las imágenes, puedes usar el comando docker rmi con su ID o etiqueta.

Usa este comando para mostrar todas las imágenes:

docker images -a

Para eliminar una imagen, usa este comando:

docker rmi [Image]

Reemplaza [Image] con el nombre de la imagen que deseas eliminar.


Eliminar imágenes colgantes

Las imágenes de Docker están compuestas por varias capas, y algunas de estas pueden quedar sin conexión con imágenes etiquetadas. Estas capas sin uso se llaman imágenes colgantes, y ocupan espacio sin servir para nada. Puedes localizarlas usando el comando docker images con el filtro -f dangling=true. Una vez identificadas, puedes usar docker image prune para eliminarlas. Asegúrate de que realmente quieres eliminarlas antes de ejecutar el comando.

Para listar todas las imágenes colgantes:

docker images -f dangling=true

Para eliminarlas:

docker image prune

Eliminar imágenes basadas en un patrón específico

Puedes usar una combinación de docker images y grep para encontrar imágenes que coincidan con un patrón determinado. Una vez que estés seguro, puedes usar awk para pasar sus IDs al comando docker rmi. Ten en cuenta que estas utilidades no son proporcionadas por Docker y pueden no estar disponibles en todos los sistemas operativos.

Para listarlas:

docker images -a | grep "pattern"

Para eliminarlas:

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

Reemplaza "pattern" con el patrón que deseas buscar.


Eliminar todas las imágenes

Puedes usar docker images -a para mostrar todas las imágenes. Si deseas eliminarlas todas, añade la opción -q para pasar los IDs al comando docker rmi.

Asegúrate de que realmente deseas eliminar todas las imágenes antes de ejecutar este comando.

docker rmi $(docker images -a -q)

Eliminación de contenedores

Por último, te mostraremos cómo eliminar contenedores de Docker en tu sistema.

Eliminar contenedores específicos

Para identificar los contenedores que deseas eliminar, usa docker ps -a para mostrar todos los contenedores, incluidos los detenidos.

Para listarlos:

docker ps -a

Para eliminarlos:

docker rm [CONTAINER-ID-OR-NAME]

Eliminar un contenedor automáticamente al salir

Si sabes que no necesitas un contenedor una vez finalizado, puedes usar la opción --rm al crear el contenedor. Esto hará que se elimine automáticamente cuando termine su ejecución.

Sintaxis:

docker run --rm image_name

Eliminar contenedores detenidos

Para ver solo los contenedores detenidos, usa la opción -f con status=exited. Una vez confirmados, usa -q para pasar sus IDs a docker rm.

Para listarlos:

docker ps -a -f status=exited

Para eliminarlos:

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

Eliminar contenedores usando filtros

Puedes combinar filtros repitiendo la opción -f. Esto generará una lista de contenedores que cumplan cualquiera de las condiciones.

Para listarlos:

docker ps -a -f status=exited -f name=[Name]

Para eliminarlos:

docker rm $(docker ps -a -f status=exited -f name=[Name] -q)

Eliminar contenedores basados en un patrón específico

Usando docker ps y grep puedes encontrar contenedores que coincidan con un patrón. Luego, con awk y xargs, puedes pasar sus IDs a docker rm. Ten en cuenta que estas utilidades pueden no estar disponibles en todos los sistemas.

Para listarlos:

docker ps -a | grep "pattern"

Para eliminarlos:

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

Detener y eliminar todos los contenedores

Con docker ps -a puedes ver todos los contenedores. Para detenerlos y eliminarlos todos, usa:

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

Conclusión

¡Felicidades! Ahora conoces algunos de los comandos y técnicas más importantes para administrar tu instancia de Docker y cómo manejar todo lo relacionado con ella.

Puedes guardar esta guía como una hoja de referencia para más adelante.

Scroll al inicio