Mover docker-desktop-data fuera de la Unidad del Sistema

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.





299 Visitas Totales 9 Visitas para Hoy

2 response on “Mover docker-desktop-data fuera de la Unidad del Sistema

  1. ¿Puedes desarrollar más tu pregunta?

    No entiendo a qué te refieres con fuera de la WSL... El rendimiento fuera de la WSL es la misma problemática que cualquier otro programa o proceso en los que se compite por los recursos hardware de una máquina. Si la unidad de hardware a donde mueves la distro docker-desktop-data es más lenta que la unidad del sistema, obviamente WSL irá más lento y por tanto Docker también.

    Si a lo que te refieres es al acceso de sistema de ficheros del sistema anfitrión (en este caso Windows), WSL2 presentaba mejoras al respecto al tratarse del uso real y completo del núcleo de Linux, mejorando los tiempos de acceso tanto en el subsistema Linux como en el sistema de ficheros de la máquina anfitrión.

    Si tienes interés entre las diferencias de las versiones de WSL, te facilito el siguiente enlace:

    https://docs.microsoft.com/es-es/windows/wsl/compare-versions

Deja un comentario