Docker es una herramienta imprescindible en muchos entornos, pero con el tiempo puede convertirse en un problema silencioso: el consumo de disco crece sin control.
Si alguna vez has revisado /var/lib/docker y te has encontrado decenas de GB ocupados, no estás solo. Esto suele deberse a imágenes antiguas, contenedores detenidos, volúmenes olvidados y logs que nunca se rotan.
En este artículo veremos cómo identificar qué está ocupando espacio y cómo limpiarlo correctamente, sin romper nada.
Analiza el uso de espacio en Docker
Antes de borrar nada, es importante entender qué está consumiendo disco. Para ello ejecutaremos este comando que nos detallará que está ocupando en disco:
docker system dfEste comando muestra un resumen del uso de espacio:
- Imágenes (Images)
- Contenedores (Containers)
- Volúmenes (Local Volumes)
- Caché de builds (Build Cache)
Si necesitas más detalle:
docker system df -vAquí verás exactamente:
- Qué imágenes están en uso
- Qué contenedores ocupan más
- Qué volúmenes existen
Limpieza básica de Docker
La forma más sencilla para limpiar Docker, es utilizar el comando prune. Con este comando podemos eliminar contenedores detenidos que ya no se están usando, redes no utilizadas, imágenes "dangling" (sin tag) y caché de builds que hayas podido hacer anteriormente.
docker system pruneLimpieza avanzada de imágenes
Con el tiempo, Docker acumula imágenes antiguas que ya no se usan. Y esto va ocupando espacio en nuestro disco. Para elminarlas tenemos el siguiente comando que permite eliminar todas las imágenes no usadas por contenedores que actualmente se encuentran activos.
docker system prune -aLimpieza de volúmenes
Los volúmenes son especialmente importantes porque almacenan datos persistentes (bases de datos, uploads, etc.). Por lo tanto suelen ocupar mucho espacio, si queremos eliminar los que no se están usando, podemos ejecutar este otro comando:
docker volume pruneLimpieza completa del sistema
Si necesitas liberar el máximo espacio posible, puedes ejecutar este otro comando, que permite eliminar contenedores detenidos, imágenes no utilizadas, redes que no se están usando, volúmenes que tampoco se usan y caché de posibles builds:
docker system prune -a --volumesIdentificar contenedores que ocupan mucho
Para ver el tamaño de cada contenedor podemos utilizar este otro comando que permite ver que contenedores están utilizando capas muy grandes o cual de ellos tienen logs excesivamente grandes:
docker ps -a --sizeProblema común: logs gigantes
Uno de los problemas más frecuentes es que Docker no rota logs por defecto. Por lo que se acaban generando logs muy grandes que se almacenan normalmente en /var/lib/docker/containers/<container-id>/*-json.log. Para vaciarlos sin detener contenedores:
truncate -s 0 /var/lib/docker/containers/*/*-json.logMás sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.
Comentarios