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

Mejores prácticas de WSL 2 para Docker Desktop en Windows

Esta página abarca recomendaciones al ejecutar Docker Desktop en Windows utilizando WSL 2, incluyendo los requisitos de versión y el rendimiento del sistema de archivos.

Mantener WSL actualizado

Utiliza siempre la versión más reciente de WSL.

Como mínimo, debes utilizar la versión 2.1.5 de WSL; de lo contrario, es posible que Docker Desktop no funcione como se espera. Además, si tienes la intención de utilizar Enhanced Container Isolation, asegúrate de usar la versión 2.6 o posterior de WSL. Esto es necesario debido a que ECI depende de una versión del kernel de Linux de al menos 6.3.0, y WSL 2.6+ incluye la versión 6.6 del kernel de Linux. Las pruebas, el desarrollo y la documentación se basan en las versiones de kernel más recientes. Las versiones anteriores de WSL pueden causar:

  • Bloqueos periódicos de Docker Desktop o al actualizar
  • Fallos en el despliegue a través de SCCM
  • Que vmmem.exe consuma toda la memoria
  • Que las políticas de filtro de red se apliquen de forma global y no a objetos específicos
  • Fallos de GPU con contenedores

Optimizar el rendimiento del sistema de archivos con montajes de tipo bind

Para obtener el mejor rendimiento del sistema de archivos al realizar montajes de tipo bind, almacena el código fuente y otros datos que se monten en los contenedores de Linux dentro del sistema de archivos de Linux. Por ejemplo, utiliza docker run -v <host-path>:<container-path> en el sistema de archivos de Linux, en lugar del sistema de archivos de Windows. También puedes consultar la recomendación de Microsoft.

Los contenedores de Linux solo reciben eventos de cambio de archivos (llamados eventos inotify) si los archivos originales están almacenados en el sistema de archivos de Linux. Por ejemplo, algunos flujos de trabajo de desarrollo web dependen de los eventos inotify para la recarga automática cuando cambian los archivos.

El rendimiento es mucho mayor cuando los archivos se montan mediante bind desde el sistema de archivos de Linux, en lugar de acceder a ellos desde el sistema de archivos del host de Windows. Por lo tanto, evita usar docker run -v /mnt/c/users:/users donde /mnt/c está montado desde Windows.

En su lugar, desde una terminal de Linux, utiliza un comando como docker run -v ~/my-project:/sources <my-image>, donde la shell de Linux expande ~ a $HOME.

Limitar el uso de CPU y memoria

Si te preocupa el uso de la CPU o de la memoria, configura límites en el tamaño de la memoria, de la CPU y del espacio de intercambio (swap) asignados a la VM auxiliar de WSL 2.