28Oct

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

Leave a comment