Curso de Docker Avanzado

Limpia Docker y recupera gigas con prune

Curso de Docker Avanzado

Contenido del curso

Optimización Avanzada en Docker

Orquestación

Limpia Docker y recupera gigas con prune

Resumen

Acumular imágenes, contenedores y volúmenes sin uso en Docker es como dejar archivos temporales en tu navegador: ocupan espacio que probablemente nunca vas a recuperar. Con el comando docker prune puedes limpiar todo eso en segundos y recuperar gigas reales de tu disco duro, algo clave si trabajas con múltiples proyectos o imágenes pesadas.

La idea es sencilla: automatizar la limpieza dentro de un script de batch para ejecutarlo de forma periódica y mantener tu instancia de Docker ligera.

¿Qué hace el comando docker prune y por qué deberías usarlo?

Cada vez que creas imágenes, despliegas contenedores o montas volúmenes, Docker guarda artefactos temporales. Muchos quedan huérfanos cuando eliminas la imagen original o detienes un contenedor sin borrarlo. El comando prune se encarga de barrer todo eso de un solo golpe.

¿Qué es docker prune? Es un comando que elimina recursos no utilizados de Docker: imágenes sin tag, contenedores detenidos, volúmenes huérfanos, redes inactivas y caché de construcción. Lo encuentras explicado desde el inicio del video [0:43].

La analogía es directa: tu navegador guarda caché para acelerar tus visitas, pero si nunca lo limpias, se llena. Docker funciona igual.

¿Cómo crear un script de batch para automatizar la limpieza?

En lugar de ejecutar comando por comando, lo práctico es agrupar todo en un archivo .sh. En la clase se crea una carpeta llamada prune dentro de Visual Studio y dentro un archivo borra-todo.sh [2:10].

El script combina cinco comandos que cubren todos los frentes de limpieza:

  • docker image prune -a: elimina imágenes sin tag o sin contenedor asociado. La bandera -a significa all [2:32].
  • docker container prune: borra contenedores detenidos o pausados que olvidaste eliminar [2:55].
  • docker volume prune: limpia volúmenes que quedaron flotando tras cerrar sus imágenes [3:10].
  • docker system prune: hace lo mismo que los tres anteriores en un solo comando, además de borrar redes no usadas [3:30].
  • Limpieza del caché de construcción de imágenes, útil cuando reconstruyes seguido [3:50].

Es redundante incluir los cinco, pero garantiza que nada quede atrás.

¿Con qué frecuencia conviene ejecutar el script?

Depende de tu ritmo de trabajo. Si construyes imágenes a diario, una vez por semana es razonable. Equipos como el de Microsoft mencionado en la clase usan este tipo de script de forma rutinaria para mantener limpias sus instancias locales [5:55].

¿Qué resultado real obtienes al ejecutar docker prune?

Al correr el script desde la terminal con bash borra-todo.sh, Docker pide confirmación en cada paso con una Y de yes. Cada bloque te dice exactamente qué va a borrar antes de hacerlo, así que tienes control total.

En la demostración los resultados fueron concretos:

  • Imágenes sin contenedor asociado eliminadas, recuperando 54 kilobytes iniciales.
  • Contenedores detenidos borrados por completo.
  • Volúmenes locales anónimos no utilizados eliminados.
  • En el paso de system prune, se recuperaron 4 GB de espacio en disco [5:00].
  • Caché de imágenes limpio, en este caso con 0 bytes porque ya estaba vacío.

¿Cuánto espacio puedo recuperar con docker prune? Depende de cuántas imágenes y volúmenes tengas acumulados. En el ejemplo de la clase se liberaron 4 GB de un solo tirón, pero en máquinas con meses de trabajo sin limpieza es común recuperar mucho más.

Después de ejecutarlo, al volver a Docker Desktop, la sección de Containers queda vacía y solo permanecen las imágenes que aún tienen un contenedor asociado activo. Todo lo demás desaparece.

¿Qué conceptos clave debes dominar antes de hacer prune?

Para aprovechar el comando sin riesgos, conviene tener claros algunos términos que aparecen en el flujo:

  • Imagen sin tag: una imagen que perdió su etiqueta identificadora, normalmente porque la reconstruiste con el mismo nombre.
  • Contenedor detenido: un contenedor que ya no está corriendo pero sigue ocupando espacio en el listado.
  • Volumen huérfano: almacenamiento persistente que sobrevivió a la eliminación de su contenedor.
  • Caché de build: capas intermedias que Docker guarda para acelerar futuras construcciones de imágenes.
  • Script de batch: archivo ejecutable que agrupa varios comandos para correrlos en secuencia.

Entender estos elementos te permite decidir qué tan agresiva quieres que sea tu limpieza.

¿Ya tienes tu propio script de mantenimiento para Docker? Cuéntame cómo lo configuraste y qué tan seguido lo corres.