Docker: limpieza rápida y segura (guía práctica con variantes)
Guía directa para liberar espacio y eliminar artefactos obsoletos en Docker. Incluye niveles de limpieza (segura, total, con volúmenes), filtros para no borrar recursos críticos y manejo de logs gigantes.
1) Ver cuánto ocupa (opcional)
- terminalBASH
docker system df -v 2) Limpieza segura (quita lo obvio)
Elimina contenedores detenidos, redes huérfanas, imágenes dangling y caché de build no referenciada:- terminalBASH
# Contenedores detenidos docker container prune # Redes no usadas (no conectadas a contenedores) docker network prune # Imágenes "dangling" (sin tag o sin usar) docker image prune # Caché de build “clásica” docker builder prune 3) Limpieza “todo lo no usado” (recomendada)
Borra TODO lo que NO está en uso por algo en ejecución: contenedores detenidos, imágenes no referenciadas, redes sin usar y caché:- terminalBASH
# Resumen en un comando docker system prune -a # (te pedirá confirmación; añade -f para no preguntar) Nota:
-aborra todas las imágenes que no estén usadas por NINGÚN contenedor (en ejecución o detenido). Si sólo quieres dangling, omite-a.4) Incluir volúmenes (agresivo: puede borrar datos)
Si también quieres eliminar volúmenes no usados (¡pierdes datos persistentes!):- terminalBASH
# Volúmenes no referenciados por contenedores docker volume prune # Todo en uno, incluidos volúmenes (super agresivo) docker system prune -a --volumes 7) Evitar borrar cosas críticas (filtros útiles)
Puedes excluir por etiqueta cuando hagas prune masivo:- terminalBASH
# No borres recursos con label keep=true docker system prune -a --filter "label!=keep" # Ejemplo al crear recursos que quieras preservar: docker run -d --label keep=true --name mi_db postgres:16 8) Logs gigantes (si te falta espacio)
Los logs JSON de contenedores pueden crecer mucho. Rotación rápida (no toca volúmenes):- LinuxBASH
# Truncar logs actuales (Linux) sudo find /var/lib/docker/containers -name "*-json.log" -exec sh -c '> "{}"' \; - /etc/docker/daemon.jsonJSON
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } - terminalBASH
# Reinicia Docker tras editar daemon.json sudo systemctl restart docker Limpieza estándar (recomendada, segura)
- terminalBASH
docker system df -v docker system prune -a docker builder prune Sugerencias para el día a día
• Pon etiquetas
keep=truea lo que no quieras que se borre.
• Define rotación de logs endaemon.json.
• Programa limpiezas con--filter "until=..."para no tocar lo reciente.
• Antes de--volumes, respalda lo importante (bases de datos, uploads).