Cómo borrar imágenes, contenedores y volúmenes olvidados en nuestro sistema de archivos por Docker
En nuestro listado de imágenes de Docker, debido a construcciones antiguas de imágenes, quedan imágenes colgadas que no usamos, etiquetadas como porque se han visto superpuesta con otras imágenes.
También los contenedores inactivos que no iniciamos con la opción –rm quedan en estado Exited y quedan volúmenes huérfanos en el sistema de archivos.
Eliminando contenedores
Con el siguiente comando limpiamos todos los contenedores en estado Exited:
docker rm $(sudo docker ps -a | grep Exit | cut -d ' ' -f 1)
Eliminando las imágenes
Para eliminar del sistema las imágenes que ya no usemos, ejecutamos:
docker rmi $(docker images | tail -n +2 | awk '$1 == "<none>" {print $'3'}')
Eliminando los volúmenes huérfanos
A partir de la versión 1.9 de Docker, de forma nativa, los volúmenes huérfanos en nuestro sistema de archivos pueden ser borrados con el siguiente comando:
docker volume rm $(docker volume ls -qf dangling=true)
Añádelo a tu crontab
Si tienes un sistema Linux puedes dejar programados los comandos de limpieza para que ejecuten semanalmente y de esta forma despreocuparte del mantenimiento y borrado de los contenedores e imágenes antiguas.
Abriendo el crontab en modo edición con el comando:
crontab -e
Podemos añadir las siguientes líneas para la ejecución semanal de los comandos:
# Elimina los contenedores en estado 'Exit' cada Domingo a las 3:30 de la madrugada 30 3 * * 6 /usr/bin/docker rm $(sudo docker ps -a | grep Exit | cut -d ' ' -f 1) # Elimina las imágenes antiguas cada Domingo a las 3:35 de la madrugada 35 3 * * 6 /usr/bin/docker rmi $(docker images | tail -n +2 | awk '$1 == "<none>" {print $'3'}') # Elimina los volúmenes huérfanos cada Domingo a las 3:40 de la madrugada 40 3 * * 6 /usr/bin/docker volume rm $(docker volume ls -qf dangling=true)
Disponible como Gist en https://gist.github.com/urodoz/8ff64c77ecfb27c7cb32