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.