Docker es una tecnología que con el devenir de los años ha ido cogiendo cada vez mayor relevancia. Sirve tanto como herramienta de desarrollo para trabajar de manera más ágil y eficiente con entornos y/o ciertas herramientas, a la vez que se consolida como pieza base en los despliegues de infraestructura orientada a servicio.
En su origen, inició su camino en sistemas GNU/Linux con el firme objetivo de facilitar los despliegues de software, automatizando y abstrayendo los mismos. Originalmente su primera implementación para sistemas Windows fue usando VirtualBox, para luego pasar a la virtualización de Hyper-V propietaria de Microsoft que supuso una mejora muy importante del rendimiento de Docker en Windows. El problema es que esta actualización supuso que al requerir de Hyper-V, obligaba a que se contara al menos con una versión Windows 10 Pro o superior. No fue hasta junio de 2019 cuando con la llegada de WSL2 (evolución de la primera versión de WSL de agosto de 2016) cuando se pudo contar con Docker en cualquier versión del sistema de Windows.
Pero aunque Docker es estupendo, ocupa bastante a nada que empiezas a trabajar con imágenes y pones en marcha contenedores...😅 Esto sumado a que la tónica habitual es instalar cualquier software en la unidad del sistema por defecto, o en el peor de los casos instalar en la unidad del sistema sin opción a elegir; hace que sea un fastidio que Docker se instale en la unidad del sistema C y además vaya aumentando el espacio que utiliza. Aunque realmente, lo que ocupa si estas usando WSL2 como backend de funcionamiento de Docker en Windows, son los datos de los contenedores que se guardan en docker-desktop-data.
Por defecto Docker Desktop para Windows creará la siguientes dos distros:
- docker-desktop
- docker-desktop-data
Si accedemos a la ruta "%LOCALAPPDATA%/Docker/wsl", veremos dos carpetas, y dentro de cada una de ellas hay un archivo vhdx. Para más detalle:
- data/ext4.vhdx que es consumido por docker-desktop-data
- distro/ext4.vhdx que es consumido por docker-desktop
En el que docker-desktop-data se usa para almacenar imágenes, etc. Por lo tanto, su tamaño aumentará en el futuro, y en consecuencia, nuestra unidad de sistema (C:) se quedará sin espacio. A continuación, se muestra paso a paso cómo sacar docker-desktop-data fuera de la unidad del sistema, por ejemplo, D:\desktop-docker\data.
🐋⚙️ Procedimiento
Paso1: Parar Docker
(Creo que esto ya te lo esperabas 😉)
Paso2: Exportar, desregistrar e importar la distro
1- Apagar todas las distros WSL
wsl --shutdown
2- Exportar docker-desktop-data a un fichero TAR
wsl --export docker-desktop-data E:\docker-desktop\docker-desktop-data.tar
3- Desregistrar la distro actual docker-desktop-data
wsl --unregister docker-desktop-data
4- Importar la distro docker-desktop-data desde el fichero TAR
wsl --import docker-desktop-data E:\docker-desktop\data E:\docker-desktop\docker-desktop-data.tar --version 2
👀 Nota: En este paso, podemos encontrarnos con el error de no poder crear una red específica. Simplemente vuelve a ejecutar el comando de importación.
Paso 3: Arrancar Docker
(Creo que esto TAMBIÉN te lo esperabas 😁)
Con este procedimiento ya tendremos Docker en una unidad que no es la del sistema, en la que el crecimiento de la distro docker-desktop-data no supondrá un problema, evitando degradar el rendimiento del sistema por llenar la unidad del sistema.