Docker Windows: crecimiento de disco incontrolado

Llevo un par de días creando una imagen de Docker para poder implementar un servidor dedicado de SCS para EST2 y ATS (estad atentos, porque en breve lo publicaré).

En estos días, me he quedado sin disco en el PC de una forma alucinante. “Algún proceso” ha consumido disco de forma descontrolada, unos 40Gb de la noche a la mañana, dejando en rojo el estado del mismo…

He usado WinDirStat, recomendado por el equipo de sistema de la empresa en la que trabajo, y el resultado es el que veis mas arriba… 31Gb sin saber bien bien dónde se han ido…

Hice limpieza en Docker Desktop (Windows), que precisamente tenía ocupado en disco casi 32Gb… pero eso no sirvió de nada. Así que me dispuse a buscar un poco por internet, y encontré el motivo de ese crecimiento de disco desmesurado. Parece ser que la nueva versión de Docker Desktop para Windows permite usar, o bien Hyper-V o WSL (sistema Linux sobre Windows). Pues bien, si no dices nada, el sistema usa WSL por defecto para gestionar las imágenes de Docker, y WSl a su vez, crea un disco virtual dónde almacena toda la caché local que utiliza para la creación de imágenes, etc…

La solución es compactar ese disco duro virtual, de forma que ocupe menos…

Os dejo cómo hacerlo, yo he recuperado 20 de los 31Gb…

Desde PowerShell:

Windows PowerShell
Copyright (C) Microsoft Corporation. Todos los derechos reservados.
Instale la versión más reciente de PowerShell para obtener nuevas características y mejoras. https://aka.ms/PSWindows                                                                                                                           

PS C:\WINDOWS\system32> cd C:\Users\<user>\AppData\Local\Docker\wsl\data
PS C:\Users\<user>\AppData\Local\Docker\wsl\data> wsl --update
Comprobando actualizaciones.
La versión más reciente de Subsistema de Windows para Linux ya está instalada.
C:\Users\<user>\AppData\Local\Docker\wsl\data\
PS C:\Users\<user>\AppData\Local\Docker\wsl\data> optimize-vhd -Path .\ext4.vhdx -Mode full

Lo primero que hacemos es actualizar WSL, por si acaso no tenemos la última versión, y posteriormente usamos el comando optimize-vhd -Path .\ext4.vhdx -Mode full desde el punto de anclaje del disco duro virtual de Docker (lo podéis ver en el código).

De esta forma, cuando acabe, tendréis liberado gran parte del espacio que Docker se ha reservado para sus cosas…

Es recomendable ir haciendo estas cosas muy a menudo, para así liberar a medida que se vaya llenando. Lo otro que también podéis hacer es hacer un system prune, para eliminar datos que ya no necesitéis, pero ese proceso es destructivo, has de estar muy seguro de lo que haces!

Espero que en futuras versiones tanto de WSL como del Docker Desktop se pueda gestionar este tipo de cosas de forma mas sencilla…

Espero haberos ayudado, cualquier casa, me decís! 🙂

 

Jordi 

 

 

Share Button

Related Images:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.