Contenido

Limpiando Dockers antiguos

En este mini-post voy a explicar cómo eliminar la basura generada por Docker. Habitualmente esto no se traducirá en liberación de espacio, pero hay veces que sí.

Veréis cómo es más fácil de lo que parece :)

Containers

Cómo se genera la basura

Hay dos tipos de cosas a borrar en Docker:

  • Por un lado, están los containers que ya no están en ejecución. Estos se crean con cada docker run que ejecutemos, y puede haber varios por imagen. Por suerte no consumen recursos y apenas espacio.
  • Por otro lado, están las imágenes. Éstas suelen estar basadas en otras. Si reutilizamos convenientemente, el espacio liberado será poco, pero esto no suele ser lo habitual. Si hay una imagen grande que no se está utilizando, puede llegar a ocupar 1 Gb o incluso más.

Cómo limpiar

La manera más sencilla que he encontrado para limpiar los containers es::

1
docker rm $(docker ps -a | awk '{print $1}')

NOTA: Este paso es peligroso, ya que eliminará todos los containers que no estén en estado “started”. Si no queréis perder algo, aseguráos de que están en ese estado con docker ps

No es bonito, ya que genera errores, pero funciona a las mil maravillas.

De la misma forma podemos eliminar imágenes:

1
docker rmi $(docker images | awk '{print $1":"$2}')

Este paso es menos peligroso, ya que habitualmente podremos descargarnos de nuevo las imágenes. De todas maneras, vuelve a dar error en todas las que se están usando.

Borrándolo todo

Un container que no está en ejecución bloquea el borrado de la imagen que utiliza, por lo que el orden correcto de borrado sería:

1
2
docker rm $(docker ps -a | awk '{print $1}')
docker rmi $(docker images | awk '{print $1":"$2}')

update: otra opción más sencilla que funciona en las últimas versiones:

1
docker system prune -a --volumes

Conclusión

Usadlo con cuidado, ya que podríais borrar algo que necesitáis. De todas maneras, en máquinas de pruebas puede venir estupendamente :)