Cómo liberar espacio en servidor Docker | Limpieza y mantenimiento de Docker
Liberar espacio en disco en un servidor Docker
Docker consume espacio sin control: imágenes antiguas, contenedores detenidos, volúmenes olvidados y logs gigantes. Aprende a limpiar correctamente sin romper nada.
El problema silencioso de Docker
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 que nunca eliminas
- Contenedores detenidos que siguen ocupando espacio
- Volúmenes olvidados sin datos útiles
- Logs que nunca se rotan y crecen sin límite
- Caché de builds acumulado
En esta guía veremos cómo identificar qué está ocupando espacio y cómo limpiarlo correctamente, sin romper nada en el proceso.
Paso 1: Analiza el uso de espacio en Docker
Antes de borrar nada, es importante entender qué está consumiendo disco. Para ello ejecuta este comando que te detallará exactamente qué está ocupando espacio:
Este comando muestra un resumen del uso de espacio:
📦 Imágenes (Images)
Todas las imágenes Docker descargadas y en uso.
🔧 Contenedores (Containers)
Contenedores activos y detenidos con sus datos.
💾 Volúmenes (Local Volumes)
Almacenamiento persistente para datos.
⚙️ Caché de builds (Build Cache)
Capas intermedias de construcción de imágenes.
Ver detalles específicos
Si necesitas más detalle sobre cada ítem:
Aquí verás exactamente:
- Qué imágenes están en uso y cuáles son huérfanas
- Qué contenedores ocupan más espacio
- Qué volúmenes existen y si son asociados
Paso 2: Limpieza básica (segura)
La forma más sencilla para limpiar Docker es utilizar el comando prune. Con este comando puedes eliminar:
- Contenedores detenidos que ya no se están usando
- Redes no utilizadas
- Imágenes "dangling" (sin tag y sin usar)
- Caché de builds anterior
¿Cuánto espacio libera?
Al ejecutar el comando, Docker te mostrará exactamente cuánto espacio está liberando. Típicamente es entre 500 MB y 5 GB en servidores con bastante movimiento.
Paso 3: Limpieza avanzada de imágenes
Con el tiempo, Docker acumula imágenes antiguas que ya no se usan. Este comando elimina todas las imágenes no usadas por contenedores que actualmente se encuentran activos:
Alternativa más segura: elimina solo por edad
Si quieres ser más selectivo, puedes eliminar imágenes que no se han usado en cierto tiempo:
Este comando elimina imágenes que no se han usado en más de 30 días (720 horas).
Paso 4: Limpieza de volúmenes
Los volúmenes son especialmente importantes porque almacenan datos persistentes: bases de datos, uploads, logs, etc. Por lo tanto suelen ocupar mucho espacio.
Para eliminar volúmenes que no están asociados a ningún contenedor:
Si un volumen no está asociado a ningún contenedor, será eliminado. Esto puede suponer pérdida de datos si no se revisa antes. Siempre verifica qué volúmenes vas a eliminar primero:
Listar volúmenes antes de eliminar
Esto te muestra qué datos contiene cada volumen antes de eliminarlo.
Paso 5: Limpieza completa (opción nuclear)
Si necesitas liberar el máximo espacio posible, puedes ejecutar este comando que elimina todo lo que no está en uso actualmente:
Esto elimina:
- Contenedores detenidos
- Imágenes no utilizadas
- Redes que no se están usando
- Volúmenes no asociados
- Caché de builds
Paso 6: Identificar contenedores que ocupan mucho
Para ver el tamaño exacto de cada contenedor y detectar cuáles están utilizando más espacio:
Este comando te muestra:
- El tamaño virtual de cada imagen base
- El tamaño real en disco (incluyendo datos modificados)
- Qué contenedores son los "culpables" de ocupar espacio
Los contenedores con mucho espacio en "real size" suelen tener logs grandes o datos acumulados.
Paso 7: El problema común de logs gigantes
Uno de los problemas más frecuentes e ignorados es que Docker no rota logs por defecto. Por lo que se acaban generando logs extremadamente grandes que se almacenan normalmente en:
Estos archivos pueden llegar a ocupar decenas de GB sin que te des cuenta.
Solución rápida: vaciar logs sin detener contenedores
Solución permanente: configurar rotación de logs
Para que Docker rote los logs automáticamente, edita o crea /etc/docker/daemon.json:
Esto configura:
- max-size: Cada archivo de log no supera 10 MB
- max-file: Se mantienen máximo 3 archivos (30 MB total)
Reinicia Docker para aplicar los cambios:
Tabla de referencia rápida
| Tarea | Comando | Riesgo | Espacio liberado |
|---|---|---|---|
| Limpiar básico | docker system prune |
Bajo | 500 MB - 2 GB |
| Eliminar imágenes antiguas | docker system prune -a |
Medio | 5 - 50 GB |
| Eliminar volúmenes | docker volume prune |
Alto (pérdida datos) | Variable |
| Limpieza nuclear | docker system prune -a --volumes |
Muy alto | 10 - 100+ GB |
| Vaciar logs | truncate -s 0 /var/lib/docker/containers/*/*-json.log |
Bajo | 1 - 50+ GB |
Plan de mantenimiento recomendado
Para evitar que el disco se sature, establece este plan de limpieza periódica:
📅 Semanal
Limpieza básica
docker system prune - Elimina contenedores parados y imágenes huérfanas.
📅 Mensual
Revisar volúmenes
docker volume ls - Identifica volúmenes sin uso y docker volume prune si es necesario.
📅 Mensual
Revisar logs
ls -lh /var/lib/docker/containers/*/*-json.log | sort -k5 -h - Ver qué logs son los más grandes y considerar la rotación.
🔧 Configuración permanente
Rotación automática de logs
Configura /etc/docker/daemon.json para que Docker rote logs automáticamente.
Comandos útiles para el día a día
Ver espacio usado por Docker
Ver qué ocupa más espacio en contenedores
Ver imágenes ordenadas por tamaño
Ver top 10 logs más grandes
Conclusión
Docker es una herramienta poderosa, pero requiere mantenimiento. El espacio en disco no es infinito, y dejar que los logs y las imágenes antiguas se acumulen es una forma segura de que tu servidor se quede sin espacio en el peor momento posible.
docker system prune y configura rotación de logs desde el inicio. Con esto evitarás el 90% de los problemas de espacio.
Comentarios
Publicar un comentario