Introducción
Docker facilita envolver tus aplicaciones y servicios en contenedores para que puedas ejecutarlos en cualquier lugar. Sin embargo, al trabajar con Docker, también es fácil acumular un número excesivo de imágenes, contenedores y volúmenes de datos no utilizados que desordenan la salida y consumen espacio en disco.
Docker te proporciona todas las herramientas que necesitas para limpiar tu sistema desde la línea de comandos. Esta guía estilo hoja de trucos proporciona una referencia rápida a los comandos que son útiles para liberar espacio en disco y mantener tu sistema organizado eliminando imágenes, contenedores y volúmenes de Docker no utilizados.
Cómo Usar Esta Guía:
- Esta guía está en formato de hoja de trucos con fragmentos de línea de comandos autocontenidos.
- Ve directamente a cualquier sección que sea relevante para la tarea que estás intentando completar.
Nota: La sintaxis de sustitución de comandos, comando $(comando)
, utilizada en los comandos está disponible en muchos shells populares, como bash, zsh y Windows Powershell.
Si deseas una forma de despliegue de una aplicación Docker a un servidor en vivo con un solo clic, echa un vistazo a Plataforma de Aplicaciones de DigitalOcean.
Eliminación de todas las imágenes inutilizadas o colgantes, contenedores, volúmenes y redes
Docker proporciona un solo comando que eliminará cualquier recurso — imágenes, contenedores, volúmenes y redes — que estén colgantes (no etiquetadas o asociadas con un contenedor):
Para eliminar además cualquier contenedor detenido y todas las imágenes inutilizadas (no solo las imágenes colgantes), agrega la bandera -a
al comando:
Eliminación de Imágenes de Docker
Eliminar una o más imágenes específicas
Utiliza el comando docker images
con la bandera -a
para localizar el ID de las imágenes que deseas eliminar. Esto te mostrará todas las imágenes, incluidas las capas de imagen intermedias. Una vez que hayas localizado las imágenes que deseas eliminar, puedes pasar su ID o etiqueta al comando docker rmi
:
Lista:
Eliminar:
Nota: La bandera -a
o --all
en el comando docker images
muestra todas las imágenes de Docker, incluidas las intermedias que no están referenciadas por ninguna etiqueta. Por defecto, docker images
muestra solo las imágenes con al menos una etiqueta. Sin embargo, pueden haber algunas imágenes sin etiquetas que aún estén ocupando espacio en el disco del sistema. La bandera -a
puede ser útil para identificar imágenes que se pueden eliminar para ahorrar espacio en el disco. Al utilizar el comando docker rmi
, también se puede usar la bandera -f
o --force
para eliminar imágenes sin etiquetas.
Eliminar Imágenes Dangling de Docker
Las imágenes de Docker constan de múltiples capas. Las imágenes dangling son capas que no tienen relación con ninguna imagen etiquetada. Ya no cumplen un propósito y consumen espacio en el disco. Se pueden localizar agregando la bandera de filtro -f
con un valor de dangling=true
al comando docker images
. Cuando estés seguro de que deseas eliminarlas, puedes usar el comando docker image prune
:
Nota: Si construyes una imagen sin etiquetarla, la imagen aparecerá en la lista de imágenes colgantes porque no tiene asociación con una imagen etiquetada. Puedes evitar esta situación proporcionando una etiqueta al construir, y puedes etiquetar retroactivamente una imagen con el comando docker tag
.
Lista:
Eliminar:
Eliminación de imágenes según un patrón
Puedes encontrar todas las imágenes que coincidan con un patrón usando una combinación de docker images
y grep
. Una vez que estés satisfecho, puedes eliminarlas utilizando awk
para pasar los ID a docker rmi
. Ten en cuenta que estos utilidades no son suministradas por Docker y no necesariamente están disponibles en todos los sistemas:
Lista:
Eliminar:
Eliminar todas las imágenes
Todas las imágenes de Docker en un sistema pueden ser listadas añadiendo -a
al comando docker images
. Una vez estés seguro de que deseas eliminarlas todas, puedes añadir la bandera -q
para pasar el ID de la imagen a docker rmi
:
Lista:
Eliminar:
Eliminando Contenedores
Eliminar uno o más contenedores específicos
Utiliza el comando docker ps
con la bandera -a
para localizar el nombre o ID de los contenedores que deseas eliminar:
Lista:
Eliminar:
Eliminar un contenedor al salir
Si sabes que al crear un contenedor no lo quieres conservar una vez que hayas terminado, puedes ejecutar docker run --rm
para eliminarlo automáticamente cuando salga:
Ejecutar y Eliminar:
Eliminar todos los contenedores que hayan salido
Puedes localizar los contenedores usando docker ps -a
y filtrarlos por su estado: creado
, reiniciando
, corriendo
, pausado
o salido
. Para revisar la lista de contenedores salidos
, utiliza la bandera -f
para filtrar según el estado. Cuando hayas verificado que quieres eliminar esos contenedores, utiliza -q
para pasar los IDs al comando docker rm
:
Lista:
Eliminar:
Eliminar contenedores utilizando más de un filtro
Los filtros de Docker pueden combinarse repitiendo la bandera del filtro con un valor adicional. Esto resulta en una lista de contenedores que cumplen cualquiera de las condiciones. Por ejemplo, si desea eliminar todos los contenedores marcados como created
(un estado que puede ocurrir cuando ejecuta un contenedor con un comando inválido) o exited
, puede usar dos filtros:
Lista:
Eliminar:
Eliminar contenedores según un patrón
Puede encontrar todos los contenedores que coincidan con un patrón usando una combinación de docker ps
y grep
. Cuando esté satisfecho con la lista que desea eliminar, puede usar awk
y xargs
para proporcionar el ID a docker rm
. Tenga en cuenta que estos utilitarios no son suministrados por Docker y no están necesariamente disponibles en todos los sistemas:
Lista:
Eliminar:
Detén y elimina todos los contenedores
Puedes revisar los contenedores en tu sistema con el comando docker ps
. Agregar la bandera -a
mostrará todos los contenedores. Cuando estés seguro de que quieres eliminarlos, puedes agregar la bandera -q
para suministrar los IDs a los comandos docker stop
y docker rm
:
Listado:
Eliminar:
Eliminando Volúmenes
Eliminar uno o más volúmenes específicos
Utiliza el comando docker volume ls
para localizar el nombre o nombres de los volúmenes que deseas eliminar. Luego puedes eliminar uno o más volúmenes con el comando docker volume rm
:
Listado:
Eliminar:
Eliminar volúmenes colgantes
Dado que el propósito de los volúmenes es existir de manera independiente de los contenedores, cuando se elimina un contenedor, un volumen no se elimina automáticamente al mismo tiempo. Cuando un volumen existe y ya no está conectado a ningún contenedor, se le llama un volumen colgante. Para localizarlos y confirmar que desea eliminarlos, puede usar el comando docker volume ls
con un filtro para limitar los resultados a volúmenes colgantes. Cuando esté satisfecho con la lista, puede eliminarlos todos con docker volume prune
:
Lista:
Eliminar:
Eliminar un contenedor y su volumen
Si crea un volumen sin nombre, puede ser eliminado al mismo tiempo que el contenedor con la bandera -v
. Tenga en cuenta que esto solo funciona con volúmenes sin nombre. Cuando se elimina correctamente el contenedor, se muestra su ID. Tenga en cuenta que no se hace referencia a la eliminación del volumen. Si no tiene nombre, se elimina silenciosamente del sistema. Si tiene nombre, permanece silenciosamente presente.
Eliminar:
Conclusión
Esta guía cubre algunos de los comandos comunes utilizados para eliminar imágenes, contenedores y volúmenes con Docker. Hay muchas otras combinaciones y banderas que se pueden usar con cada uno. Para obtener una guía completa sobre lo que está disponible, consulte la documentación de Docker para docker system prune
, docker rmi
, docker rm
y docker volume rm
. Si hay tareas comunes de limpieza que le gustaría ver en la guía, por favor pregunte o haga sugerencias en los comentarios.
Para obtener una mirada detallada a los diferentes componentes de un contenedor de Docker, consulte El Ecosistema Docker: Una Introducción a los Componentes Comunes.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes