Compartir comentarios
Las respuestas se generan en base a la documentación.

Backend de Docker Desktop con WSL 2 en Windows

Windows Subsystem for Linux (WSL) 2 es un kernel de Linux completo creado por Microsoft que permite que las distribuciones de Linux se ejecuten sin tener que administrar máquinas virtuales. Con Docker Desktop ejecutándose en WSL 2, puedes aprovechar los espacios de trabajo de Linux y evitar el mantenimiento de scripts de compilación tanto para Linux como para Windows. Además, WSL 2 ofrece mejoras en el uso compartido del sistema de archivos, tiempos de inicio en frío más rápidos y asignación dinámica de recursos.

Dado que WSL 2 utiliza la asignación dinámica de memoria, Docker Desktop solicita únicamente la CPU y la memoria que realmente necesita, liberando recursos para el resto de tu sistema, a la vez que permite que las tareas con un uso intensivo de memoria, como las compilaciones de imágenes en varias etapas, se ejecuten a máxima velocidad.

Requisitos previos

Antes de activar la función WSL 2 de Docker Desktop, asegúrate de cumplir con lo siguiente:

Tip

Considera habilitar la configuración autoMemoryReclaim de WSL, disponible desde la versión WSL 1.3.10 (experimental). Esta configuración permite que Windows recupere la memoria no utilizada de la máquina virtual de WSL, evitando que la caché de páginas del kernel de Linux retenga grandes cantidades de RAM después de que finalicen las compilaciones de imágenes de contenedores. Esto resulta en una mejor disponibilidad de memoria para otras aplicaciones en el host.

Activar Docker Desktop con WSL 2

Antes de instalar Docker Desktop, desinstala cualquier versión de Docker Engine o la CLI de Docker que se haya instalado directamente dentro de una distribución de Linux en WSL. Ejecutar ambos puede causar conflictos.

  1. Descarga e instala la versión más reciente de Docker Desktop para Windows.

  2. Sigue las instrucciones de instalación habituales para instalar Docker Desktop. Dependiendo de la versión de Windows que uses, Docker Desktop puede pedirte que actives WSL 2 durante la instalación. Lee la información que aparece en pantalla y activa la función WSL 2 para continuar.

  3. Inicia Docker Desktop desde el menú Windows Start.

  4. Dirígete a Settings.

  5. En la pestaña General, selecciona Use WSL 2 based engine.

    Si has instalado Docker Desktop en un sistema compatible con WSL 2, esta opción estará activada de forma predeterminada.

  6. Selecciona Apply.

Los comandos docker ahora están disponibles desde cualquier terminal de Windows que utilice el motor de WSL 2.

Tip

De forma predeterminada, Docker Desktop almacena los datos del motor de WSL 2 en C:\Users\[USERNAME]\AppData\Local\Docker\wsl. Si quieres cambiar la ubicación, ve a la página Settings -> Resources -> Advanced desde el Docker Dashboard. Obtén más información sobre esto y otros ajustes de Windows en Cambiar la configuración

Habilitar Docker en una distribución de WSL 2

WSL 2 permite que múltiples distribuciones de Linux se ejecuten en paralelo en un único kernel compartido. Docker Desktop no requiere que haya una distribución específica instalada, y los comandos docker funcionan desde Windows sin necesidad de ella. Sin embargo, habilitar la integración de WSL para una distribución te da acceso directo a los comandos docker desde la terminal de esa distribución, lo cual es útil para flujos de trabajo de desarrollo nativos de Linux.

  1. Asegúrate de que la distribución se ejecute en modo WSL 2. WSL puede ejecutar distribuciones tanto en modo v1 como v2.

    Para comprobar el modo de WSL, ejecuta:

    $ wsl.exe -l -v
    

    Para actualizar la distribución de Linux a v2, ejecuta:

    $ wsl.exe --set-version (distribution name) 2
    

    Para establecer la versión v2 como predeterminada para futuras instalaciones, ejecuta:

    $ wsl.exe --set-default-version 2
    
  2. Cuando se inicie Docker Desktop, ve a Settings > Resources > WSL Integration.

    La integración de Docker con WSL está habilitada en la distribución predeterminada de WSL, que es Ubuntu. Para cambiar la distribución predeterminada de WSL, ejecuta:

    $ wsl.exe --set-default <distribution name>
    

    Si la opción WSL Integration no está disponible en Resources, es posible que Docker esté en modo de contenedores de Windows. En la barra de tareas, selecciona el menú de Docker y luego Switch to Linux containers.

  3. Selecciona Apply.

Seguridad de WSL 2 en Docker Desktop

La integración de WSL 2 de Docker Desktop funciona dentro del modelo de seguridad existente de WSL y no introduce riesgos de seguridad adicionales al comportamiento estándar de WSL.

Docker Desktop se ejecuta dentro de su propia distribución de WSL docker-desktop, aislada de otras distribuciones de la misma manera en que dos distribuciones de WSL cualesquiera están aisladas entre sí. La interacción entre Docker Desktop y otras distribuciones solo ocurre cuando habilitas explícitamente la integración de WSL para esas distribuciones. Esta característica te permite acceder fácilmente a la CLI de Docker desde las distribuciones integradas.

WSL está diseñado para facilitar la interoperabilidad entre los entornos Windows y Linux. Su sistema de archivos es accesible desde el host de Windows en \\wsl$, lo que significa que los procesos de Windows pueden leer y modificar archivos dentro de WSL. Este comportamiento no es específico de Docker Desktop, sino más bien un aspecto principal del propio WSL.

Para entornos que requieran un aislamiento más estricto:

  • Ejecuta Docker Desktop en modo Hyper-V en lugar de WSL 2 para evitar por completo el modelo de kernel compartido.
  • Habilita Enhanced Container Isolation para añadir una capa adicional de protección a las cargas de trabajo de los contenedores, independientemente del backend.

Recursos adicionales