Docker prune en Mac: libera espacio sin perder tus datos
Ejecuta docker system df para ver qué se puede recuperar y luego docker system prune, que borra contenedores detenidos, redes sin uso, imágenes colgantes y caché de compilación sin uso. Añade -a solo si aceptas volver a descargar imágenes y --volumes solo si sabes qué hay en tus volúmenes anónimos. En Mac todo vive dentro de una única imagen de disco de Docker Desktop: borra con comandos de Docker, nunca tocando ese archivo.
En Mac, Docker Desktop ejecuta Linux dentro de una pequeña máquina virtual. Cada imagen que descargas, cada contenedor que detienes y cada capa que compilas se queda dentro de un único archivo de imagen de disco. Ese archivo crece en silencio y Finder no te dice qué hay dentro. En esta guía verás cómo medir lo que usa Docker, qué comando prune conviene, qué borra cada opción y cómo funciona la imagen de disco.
Paso 1: mira qué está usando Docker
Empieza con un comando que solo lee:
docker system df
Muestra una tabla con Images, Containers, Local Volumes y Build Cache, con las columnas Total, Active, Size y Reclaimable (docker system df). Reclaimable es el espacio que puedes recuperar sin tocar lo que está en uso.
Para ver el detalle por imagen, contenedor y volumen:
docker system df -v
Fíjate en tres cosas:
- Imágenes sin ningún contenedor. Algunas son “colgantes” (dangling): capas viejas sin etiqueta que suelen quedar después de recompilar.
- Build Cache. En equipos que compilan imágenes a menudo, suele ser la línea más grande.
- Local Volumes. Normalmente guardan datos reales, como una base de datos Postgres o MySQL local. Trátalos con cuidado.
Paso 2: el prune por defecto
La limpieza estándar es:
docker system prune
Según la referencia oficial, borra:
- todos los contenedores detenidos
- todas las redes que no usa al menos un contenedor
- todas las imágenes colgantes
- la caché de compilación sin uso
Los volúmenes no se borran por defecto. Docker pide confirmación antes de borrar nada.
Borrar solo lo antiguo
Si quieres conservar lo reciente, filtra por antigüedad. El filtro until acepta duraciones como 24h:
docker system prune --filter "until=24h"
Así solo se borran los contenedores, imágenes y redes creados hace más de 24 horas.
Paso 3: opciones más agresivas
Borrar todas las imágenes sin uso con -a
docker system prune -a
Con -a, Docker borra todas las imágenes que no tienen al menos un contenedor asociado, no solo las colgantes, y toda la caché de compilación.
Borrar volúmenes anónimos con –volumes
docker system prune --volumes
Con --volumes, Docker también borra los volúmenes anónimos que no usa al menos un contenedor.
Juntar las dos, docker system prune -a --volumes, es la opción más destructiva. Úsala solo en un equipo donde puedas reconstruirlo todo desde cero.
Paso 4: limpiar solo la caché de compilación
Si docker system df muestra que el problema es Build Cache, no hace falta tocar imágenes ni contenedores:
docker builder prune
Por defecto solo borra la caché de compilación colgante (docker builder prune). Opciones útiles:
-aborra toda la caché sin uso, no solo la colgante.--filter until=24hconserva la caché reciente.--keep-storagemantiene una cantidad de caché, por ejemplo--keep-storage 10GB, para que las compilaciones frecuentes sigan siendo rápidas.
Paso 5: entiende la imagen de disco de Docker Desktop
En Mac, Docker Desktop guarda todos los contenedores e imágenes de Linux en un único archivo de imagen de disco. La documentación de Docker lo sitúa en ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw (Docker Desktop for Mac FAQs). Puedes ver su ubicación en Settings > Resources > Advanced.
Su tamaño real es menor de lo que parece
Docker.raw es un archivo disperso (sparse). Docker avisa de que muchas herramientas muestran el tamaño máximo del archivo, no el real. Para ver el tamaño real, ejecuta esto en esa carpeta:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
La primera columna es el espacio que se usa de verdad; la columna de tamaño es el máximo.
Prune libera espacio, borrar archivos dentro de un contenedor no
Docker explica que el espacio solo se libera cuando se borran imágenes. Con un archivo Docker.raw, el espacio suele volver a macOS en pocos segundos. Si no ocurre, Docker documenta este comando para forzarlo:
docker run --privileged --pid=host docker/desktop-reclaim-space
El límite de disco en Ajustes
En Settings > Resources > Advanced, Docker Desktop te deja fijar el espacio máximo que puede usar el motor (Docker Desktop settings). Subirlo le da margen a Docker. Bajarlo no sirve para limpiar:
Nunca borres Docker.raw a mano
Borrar o mover el archivo desde Finder equivale a vaciar Docker: imágenes, contenedores y volúmenes se van con él. Si quieres empezar limpio, usa a propósito la opción de restablecer de Docker, sabiendo lo que pierdes. Para la limpieza normal bastan los comandos prune.
Una rutina segura
docker system dfpara ver qué se puede recuperar.docker system pruneuna vez por semana, o con--filter until=168hpara conservar la última semana.docker builder prunecuando crece la caché de compilación.-ay--volumessolo cuando sepas qué pierdes.
Vuelve a ejecutar docker system df después de cada paso para ver cuánto espacio recuperaste.
Siguientes pasos
Docker casi nunca es la única herramienta de desarrollo que llena el disco. Si haces apps para Apple, lee cómo borrar DerivedData de Xcode sin romper nada. Para proyectos de JavaScript, mira cómo limpiar node_modules y las cachés de npm, pnpm y yarn. Y para el resto de la Mac, empieza por cómo liberar espacio en Mac o prueba Pruneo, que es gratis.
Preguntas frecuentes
¿docker system prune borra los volúmenes?
No por defecto. Los volúmenes se conservan salvo que añadas --volumes, y aun así Docker solo quita los volúmenes anónimos que no usa ningún contenedor.
¿Por qué Docker.raw ocupa tanto en mi Mac?
Muchas herramientas muestran el tamaño máximo de la imagen de disco, no lo que ocupa de verdad. Docker indica usar ls -klsh Docker.raw: la primera columna es el tamaño real.
¿Puedo borrar Docker.raw sin más?
Si lo borras, pierdes de golpe todos tus contenedores, imágenes y volúmenes. Usa los comandos prune o, si de verdad quieres empezar de cero, restablece Docker Desktop a propósito.
¿Qué diferencia hay entre docker system prune y docker builder prune?
docker system prune limpia contenedores, redes, imágenes y caché de compilación a la vez. docker builder prune solo limpia la caché de compilación, que a menudo es lo que más ocupa.