Optimizar Docker en Windows

por David Abad
Optimizar Docker en Windows

Docker es una de las herramientas más utilizadas de virtualización de entornos para el desarrollo de software.
Esta herramienta tiene un muy buen rendimiento en sistemas Linux, pero en sistemas Windows y Mac suele ser bastante poco eficiente. Sin embargo existen estrategias para poder trabajar con entornos Docker en Windows con un rendimiento óptimo, similar al obtenido en sistemas Linux.

Cómo funciona Docker en Windows

La herramienta Docker permite crear entornos de trabajo virtuales de manera cómoda y rápida independientemente del equipo en el que se ejecute. Sin embargo, existen diferencias notables de rendimiento entre los entornos Docker ejecutados sobre sistemas Linux y los ejecutados sobre sistemas Windows/Mac.

Docker en Windows es considerablemente más lento que en Linux debido a diferencias en la forma en que ambos sistemas operativos gestionan los contenedores. En Windows, los contenedores se ejecutan dentro de una máquina virtual Hyper-V, lo que agrega una sobrecarga adicional, ya que la máquina virtual debe emular el hardware para que los contenedores puedan acceder y hacer uso de los recursos del sistema. Mientras que en Linux, Docker se ejecuta directamente en el sistema operativo, lo que proporciona una capa más liviana y, por lo tanto, una mayor eficiencia.

Además, algunos procesos en Windows que se ejecutan en segundo plano, como el uso compartido de archivos o la redirección de puertos, también afectan al rendimiento de los contenedores.

Optimizar Docker con WSL2

Las versiones recientes del sistema Windows incluyen la solución WSL2 (Windows Subsystem for Linux). Esta característica permite a los desarrolladores instalar y ejecutar un entorno Linux dentro del sistema Windows, sin necesidad de virtualización. 

Para optimizar nuestros entornos virtuales Docker en Windows, utilizaremos la funcionalidad de WSL2 para ejecutar Docker en un subsistema Linux en vez de lanzarlo directamente en Windows. 

1. Habilitar WSL2

Para habilitar WSL2 debemos lanzar los siguientes comandos desde la terminal Powershell (ejecutar como administrador):

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
wsl --install
wsl --set-default-version 2

2. Instalar distribución Linux

Una vez instalado WSL2, necesitaremos instalar una distribución de Linux desde la tienda de aplicaciones de Windows.
(La tienda dispone de varias distribuciones Linux, pero recomiendo instalar la distribución Ubuntu).

Instalar Ubuntu WSL

Al instalar la distribución de Linux, podremos acceder a un terminal Linux desde la aplicación “Ubuntu” accesible desde el menú de inicio de nuestro sistema.

3. Instalar Docker en Linux

Para instalar Docker dentro del subsistema Linux, debemos lanzar los siguientes comandos dentro de la terminal de Linux (aplicación Ubuntu):

sudo apt-get install curl gnupg ca-certificates lsb-release

# Añadir el repositorio de paquetes de Docker a Ubuntu
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Instalar Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose

# Ajustar permisos
sudo usermod -aG docker $USER
sudo chown root:docker /var/run/docker.sock
sudo chown -R root:docker /var/run/docker

4. Trabajar con WSL2

Al habilitar WSL2 e instalar la distribución Linux en nuestro sistema, se creará una ubicación de red a través de la que podemos acceder e interactuar con el sistema de ficheros de Linux.

Esta ubicación de red es perfectamente accesible desde nuestro IDE (PHP Storm, Visual Studio Code, etc.), por lo que podemos clonar y trabajar con el código de nuestro proyecto en esta ubicación de red y, de esta manera, los ficheros serán accesibles desde el subsistema Linux. 

Linux WSL - Ubicacion de red

Para iniciar e interactuar con el entorno Docker podemos utilizar el terminal Linux, accediendo a la ubicación del proyecto y lanzando los comandos de Docker correspondientes:

Docker WSL2

Al utilizar este subsistema Linux, no será necesario instalar la herramienta Docker for Desktop para trabajar con nuestros entornos virtuales.

Entornos Magento con Docker

Si queremos trabajar con Magento en entornos virtuales Docker, podemos utilizar la herramienta Hiberus Dockergento

Hiberus Dockergento es una de las herramienta más eficientes para crear entornos Docker de desarrollo para proyectos Magento. La herramienta está pensada para trabajar en sistemas Linux y Mac. Pero, al utilizar la característica WSL2, podemos utilizarla en nuestros sistemas Windows sin ningún problema. 

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos