¿Usas Docker Desktop en Windows? Entonces sabes que borrar imágenes, contenedores y volúmenes no significa necesariamente que vayas a recuperar espacio en disco. ¿Qué es lo que pasa? En esta entrada te contamos por qué borras imágenes de Docker pero su VHDX sigue ocupando espacio, y cómo solucionarlo definitivamente.
Por qué borras imágenes de Docker, pero su VHDX sigue ocupando espacio

Te das cuenta de que necesitas liberar espacio en el disco C:, así que abres Docker y ejecutas un docker system prune. El comando promete liberar decenas de gigabytes, y hasta ves en pantalla el mensaje de “espacio reclamado”. Pero, cuando revisas el Explorador de Windows, la unidad sigue igual de llena. La carpeta AppData sigue pesando lo mismo y ese molesto aviso de “poco espacio en disco” persiste.
En efecto, borras imágenes de Docker pero su VHDX sigue ocupando espacio. ¿Por qué? No se trata necesariamente de un error de Docker ni de una falla en el proceso de limpieza. Más bien, el problema está relacionado con la forma en que Docker Desktop utiliza discos virtuales mediante WSL2. Aunque elimines los datos que contiene, el archivo VHDX no siempre reduce automáticamente su tamaño en Windows.
Docker Desktop en Windows y la ilusión del borrado
Para comprender el problema, primero conviene entender cómo funciona Docker Desktop en Windows. A diferencia de Linux y macOS, donde Docker corre nativamente sobre el kernel del sistema, en Windows Docker utiliza WSL2 como motor de virtualización ligero. Esto significa que todos los datos de Docker se almacenan dentro de un disco virtual independiente y con formato VHDX.
Y aquí está la clave del problema: los archivos VHDX son de naturaleza dinámica y expansiva, pero no contráctil. ¿Qué significa? Que, cuando instalas una imagen de 5 GB, el archivo VHDX crece 5 GB; pero no pasa lo contrario cuando la borras. Docker elimina los archivos y libera los bloques lógicos dentro de su entorno Linux. Pero, del lado de Windows, el archivo VHDX no se reduce de forma automática.
Si algo hay que decir a favor de Microsoft es que diseñó esto así por una buena causa. Piénsalo, ¿qué pasaría si el archivo VHDX se encogiera y volviera a crecer cada vez que borras o creas un contenedor? Pues que el rendimiento del disco SSD se vería afectado negativamente debido al desgaste por escritura constante y la sobrecarga de gestionar la fragmentación. Por eso, la contracción es una operación manual que tienes que ejecutar manualmente.
VHDX sigue ocupando espacio aunque borras imágenes de Docker: Solución
Veamos cómo recuperar espacio de verdad una vez que borras imágenes de Docker en tu PC con Windows. Lo que vamos a hacer es ir a por el archivo VHDX y reducirlo lo más que se pueda. Pero primero, hay que asegurarse de que realmente no haya datos útiles dentro de la máquina virtual de Docker.
Comienza por abrir una terminal (PowerShell o CMD) con Docker Desktop en ejecución y ejecuta el comando de limpieza profunda (docker system prune -a --volumes). Ten en cuenta que esta acción eliminará todas las imágenes que no estén siendo usadas por un contenedor en ejecución, así como todos los volúmenes montados. No está de más que respaldes primero cualquier base de pruebas o datos importantes en volúmenes que tengas.
El parámetro -a (all) elimina todas las imágenes no utilizadas, no solo las «colgantes» (dangling). Y el parámetro --volumes limpia los volúmenes huérfanos. Tras ejecutarlo, verás un mensaje indicando cuánto espacio se ha «reclamado». Ese es el espacio que se ha liberado dentro del VHDX, pero como dijimos, el archivo en Windows seguirá igual.
Detén Docker Desktop y WSL 2
Este segundo paso es fundamental: tienes que detener Docker Desktop y todas las instancias abiertas de WSL. Si no lo haces e intentas ejecutar el archivo de compresión, recibirás un error de «archivo bloqueado» o «acceso denegado». Cuando borras imágenes de Docker de verdad, es porque has seguido este orden:
- Primero, cierra Docker Desktop por completo. Haz clic derecho en el icono en la bandeja del sistema y selecciona Quit Docker Desktop.
- Segundo, abre una PowerShell como Administrador y ejecuta el comando
wsl --shutdown. Así apagas todos los subsistemas de Linux que estén corriendo.
Comprime VHDX (Optimize-VHD o Diskpart)
¿Borras imágenes de Docker pero VHDX sigue ocupando espacio? ¡Ya no más! Ahora que el archivo VHDX está libre de bloqueos, tienes dos formas de contraerlo. Va a depender de la edición de Windows que estés utilizando.
Si tienes una edición «Pro» o superior, lo más sencillo es usar el cmdlet de PowerShell que viene con el módulo de Hyper-V. El proceso puede tardar desde unos segundos hasta varios minutos, dependiendo del tamaño del archivo. En la misma ventana de PowerShell con privilegios de administrador, ejecuta:
Optimize-VHD -Path "$env:LOCALAPPDATA\Docker\wsl\disk\docker_data.vhdx" -Mode Full
Un detalle: la ruta puede varias un poco según tu versión de Docker. Si el comando falla porque no encuentra el archivo, verifica la ruta exacta en C:\Users\TuUsuario\AppData\Local\Docker\wsl\. En versiones antiguas, el archivo podría llamarse ext4.vhdx y estar en la carpeta data en lugar de disk.
Por otro lado, si tienes Windows Home, el comando Optimize-VHD no está disponible porque el módulo de Hyper-V no se puede instalar. En este caso, puedes usar la herramienta de línea de comandos diskpart. Abre una ventana de Símbolo del sistema o PowerShell como Administrador y sigue estos pasos:
- Escribe
diskparty presiona Enter. - Ejecuta
select vdisk file="C:\Users\TuUsuario\AppData\Local\Docker\wsl\disk\docker_data.vhdx"(asegúrate de poner la ruta correcta y las comillas). - Escribe
attach vdisk readonlypara montar el disco en modo de solo lectura y así poder trabajar con él. - Ahora escribe
compact vdisk. Diskpart analizará el archivo y eliminará los bloques no utilizados. - Cuando acabe, escribe
detach vdiskpara desmontarlo de forma segura. - Finalmente, escribe
exitpara salir de diskpart.
Borras imágenes de Docker y VHDX sí reduce su tamaño

¡Está hecho! Ahora borras imágenes de Docker y VHDX sí reduce su tamaño. Una vez acaba el proceso, regresa al Explorador de Windows y revisa el tamaño del archivo docker_data.vhdx. Deberías ver una reducción drástica. Si no, significa que había datos reales ocupando ese espacio, así que toca revisar nuevamente con docker system df para ver qué está ocupando espacio.
Para la mayoría de los mortales, este método de compresión manual es suficiente para recuperar espacio de verdad. Solo hay que seguir el orden de los factores: limpieza interna – apagar WSL – Comprimir con Optimize-VHD o Diskpart. De forma sencilla segura, ahora puedes recuperar decenas de gigabytes en cuestión de minutos.
Índice
Desde muy joven he sentido una gran curiosidad por todo lo relacionado con los avances científicos y tecnológicos, en especial aquellos que nos hacen la vida más fácil y entretenida. Me encanta estar al tanto de las últimas novedades y tendencias, y compartir mis experiencias, opiniones y consejos sobre los equipos y gadgets que uso. Esto me llevó a convertirme en redactor web hace poco más de cinco años, enfocado principalmente a los dispositivos Android y sistemas operativos Windows. He aprendido a explicar con palabras simples aquello que resulta complicado para que mis lectores puedan entenderlo fácilmente.


