Limpiar recursos de Docker de forma segura

·6 min de lectura·

Docker conserva imágenes, contenedores detenidos, redes, volúmenes y caché de compilación. Con el tiempo estos recursos pueden ocupar espacio, pero que un objeto parezca «sin uso» no significa necesariamente que sus datos ya no sean necesarios. Esta guía muestra cómo inspeccionar y limpiar cada tipo por separado antes de confirmar cualquier eliminación [1].

⚠️ Atención: los comandos prune eliminan recursos y no ofrecen una papelera de reciclaje. Revisa qué afectará cada operación y conserva una copia de los datos que quieras mantener.

Revisar el uso de espacio

Empieza por consultar cuánto espacio atribuye Docker a sus recursos:

docker system df
docker system df -v

La opción -v muestra información detallada [5]. Después lista los objetos para identificar cuáles son candidatos a revisión:

docker ps -a
docker image ls
docker volume ls
docker network ls

Un contenedor detenido puede guardar configuración o datos que aún quieras recuperar. Una imagen que no está vinculada a un contenedor puede servir para volver a desplegar una versión anterior. Revisa el propósito de cada recurso antes de borrarlo.

Eliminar contenedores detenidos

Para borrar un contenedor concreto, comprueba primero su nombre, estado y configuración:

docker inspect NOMBRE_O_ID
docker rm NOMBRE_O_ID

Si ya has revisado todos los contenedores detenidos y quieres eliminarlos en bloque, puedes usar:

docker container prune

Docker pide confirmación. El comando elimina todos los contenedores detenidos del daemon actual. También permite limitar la selección por antigüedad, por ejemplo, a los que llevan más de 24 horas detenidos [2]:

docker container prune --filter "until=24h"

El filtro reduce el alcance, pero no sustituye la revisión: comprueba si esos contenedores contienen información que necesites.

Limpiar imágenes

El modo predeterminado elimina imágenes colgantes: imágenes sin etiqueta que no están referenciadas por ningún contenedor [3].

docker image prune

La opción -a amplía el borrado a todas las imágenes no utilizadas por contenedores. Puede eliminar imágenes etiquetadas que quieras conservar para despliegues posteriores, así que úsala solo tras comprobar la lista y saber que puedes descargarlas o reconstruirlas [3].

docker image prune -a

Si prefieres actuar sobre una imagen concreta, identifica su nombre o ID con docker image ls y elimínala de forma explícita:

docker image rm NOMBRE_O_ID

Revisar redes no utilizadas

Las redes Docker que no están conectadas a ningún contenedor pueden eliminarse con [6]:

docker network prune

Antes de confirmar, comprueba las redes con docker network ls y asegúrate de que no forman parte de una configuración que vayas a necesitar más adelante. Para borrar una red concreta, usa docker network rm NOMBRE_O_ID después de verificar que no tiene contenedores conectados.

Tratar los volúmenes como datos

Los volúmenes pueden contener bases de datos, cargas de usuarios y otros datos persistentes [7]. Que un volumen no esté conectado ahora mismo a un contenedor no demuestra que se pueda borrar: podría pertenecer a un servicio detenido o a una instalación que quieras recuperar.

Lista e inspecciona los volúmenes antes de decidir:

docker volume ls
docker volume inspect NOMBRE

La eliminación explícita permite revisar cada nombre:

docker volume rm NOMBRE

docker volume prune elimina volúmenes locales anónimos que no están referenciados por contenedores. La opción --all amplía la selección a los volúmenes con nombre que tampoco estén referenciados; ambos casos pueden contener datos útiles, así que haz copia de seguridad y verifica su finalidad antes de confirmar [4].

docker volume prune

No uses docker volume prune --all como rutina automática. Un volumen con nombre y sin contenedor conectado puede seguir siendo el único lugar donde estén guardados datos que quieras conservar [4].

Limpieza general: alcance de docker system prune

docker system prune reúne varias limpiezas: elimina contenedores detenidos, redes no utilizadas, imágenes colgantes y caché de compilación no utilizada. No elimina volúmenes por defecto; Docker mantiene esa protección para evitar borrar datos importantes sin una petición explícita [1].

docker system prune

Añadir -a también elimina imágenes no utilizadas, incluidas las etiquetadas. Añadir --volumes incorpora volúmenes anónimos sin referencia a contenedores. Las opciones amplían el alcance del borrado; no las combines sin revisar antes qué recursos y datos pueden desaparecer [1].

# Más amplio: incluye imágenes no utilizadas, no solo las colgantes
docker system prune -a

# También incluye volúmenes anónimos no referenciados
docker system prune --volumes

La documentación actual distingue los volúmenes anónimos de los que tienen nombre: docker system prune --volumes incluye los anónimos, mientras que docker volume prune --all puede borrar también los volúmenes con nombre sin referencias [1][4].

Una rutina prudente

  1. Mide el uso con docker system df -v.
  2. Inspecciona contenedores, imágenes, redes y volúmenes con sus comandos ls e inspect.
  3. Conserva o respalda los datos persistentes antes de borrar recursos.
  4. Limpia por tipo y con el alcance más pequeño que resuelva el problema.
  5. Vuelve a revisar el espacio y las listas después de cada operación.

Evita comandos que construyen automáticamente una lista completa de IDs para detener o borrar todos los contenedores, imágenes o volúmenes. Esos atajos hacen difícil revisar el alcance y pueden eliminar recursos necesarios. Las opciones --force (-f) omiten la confirmación interactiva; no las añadas a una orden de limpieza salvo que la operación esté revisada y automatizada de forma deliberada [1][2].

En resumen

  • Usa docker system df para localizar el consumo antes de actuar.
  • docker container prune elimina todos los contenedores detenidos, salvo que filtres la selección.
  • docker image prune es más acotado que docker image prune -a.
  • Revisa los volúmenes como datos persistentes; «sin referencia» no equivale a «prescindible».
  • Ejecuta docker system prune solo entendiendo qué recursos incluye y qué opciones amplían su alcance.

📚 Fuentes consultadas

  1. Prune unused Docker objects — Docker Docs
  2. docker container prune — Docker Docs
  3. docker image prune — Docker Docs
  4. docker volume prune — Docker Docs
  5. docker system df — Docker Docs
  6. docker network prune — Docker Docs
  7. Volumes — Docker Docs

Imagen

Limpieza segura de recursos en Docker

¿Te ha resultado útil?

Compártelo con tu red de contactos profesionales.

Comentarios (0)

Sé el primero en comentar.