DEV Community

Raül Martínez i Peris
Raül Martínez i Peris

Posted on

Windows: container Windows + container Linux (I)

Índice

  • Sección primera (básico):
    • Docker en Windows. Apartado I: Instalar WSL2 (y Docker).
    • Docker en Windows. Apartado II: Instalar Docker en Windows 11.
  • Sección segunda (avanzado):
    • Docker en Windows. Apartado III: Confianza entre entornos.
    • Docker en Windows. Apartado IV: Configurar conexión entre Docker Windows y Docker WSL.
    • Docker en Windows. Apartado V: Instalar Portainer en el entorno WSL.
    • Docker en Windows. Apartado VI: Apuntes.

Si has empezado a leer es porque te has encontrado con la necesidad de poner en funcionamiento la virtualización para contenedores Windows y te has tropezado con que no podías utilizar contenedores Linux. Además, si te instalas la virtualización para contenedores Linux te pasará que no puedes utilizar la virtualización Hyper-V de Windows.

En esta sección crearemos un entorno en el cual podamos lanzar contenedores Windows y Linux.

Hemos dividido esta sección en dos:

  • En la primera (básica), hacemos una instalación de WSL2 y Docker (en Windows y WSL2).
  • En la segunda (avanzada), el resto de los apartados, en los cuales realizamos la configuración de ambos entornos Docker y los conectamos, lo cual incluye poner en funcionamiento una CA para usos internos.

Apartado I. Instalar WSL2 (y Docker)

Se llama WSL al Subsistema Linux en Windows, una virtualización capaz de tener funcionando un sistema Linux dentro de un sistema Windows.

Pon atención a la consola que estás utilizando, ya que te encontrarás con tres casos:

  • Consola CMD.
  • Consola Powershell.
  • Consola Linux.

Por defecto utilizaremos la consola Powershell.

Comprobar instalación de WSL2

Primero intentaremos actualizar WSL a la versión 2. Inicia una terminal Powershell y ejecuta:

wsl --update
Enter fullscreen mode Exit fullscreen mode

Si recibes un error porque no tienes habilitado el subsistema, pasa al siguiente apartado, si se ha actualizado, verifica las distribuciones instaladas:

wsl --list --verbose
Enter fullscreen mode Exit fullscreen mode

Si ves que la distribución de Ubuntu está en estado Stopped, puedes ponerla en ejecución con:

wsl -d Ubuntu
Enter fullscreen mode Exit fullscreen mode

Vuelve al entorno Powershell, para ello debes salir de la terminal de Ubuntu, ejecuta:

exit
Enter fullscreen mode Exit fullscreen mode

Instalar WSL2 y Ubuntu en el caso de que no esté instalado

Si no está instalado WSL, debes habilitar la característica WSL, para ello ejecuta en la consola PowerShell:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Enter fullscreen mode Exit fullscreen mode

Es aconsejable que una vez terminada la instalación (puede tardar bastante) se haga un reinicio del ordenador.

Después de reiniciar, habilita el hipervisor:

bcdedit /set hypervisorlaunchtype auto
Enter fullscreen mode Exit fullscreen mode

... y vuelve a reiniciar.

Una vez activada la característica de virtualización WSL, pasamos a instalar una distribución de Linux (Ubuntu):

wsl --install -d Ubuntu
Enter fullscreen mode Exit fullscreen mode

Esto descargará, instalará y configurará Ubuntu en el entorno WSL. Para finalizar te pedirá los datos para dar de alta un usuario y su nueva contraseña para el entorno de la distribución instalada.

Configuración de WSL2

Ahora vamos a establecer WSL2 como predeterminado. Ejecuta:

wsl --set-default-version 2
Enter fullscreen mode Exit fullscreen mode

Inicia una sesión en Ubuntu:

wsl -d Ubuntu
Enter fullscreen mode Exit fullscreen mode

Revisamos que systemd está habilitado inspeccionando el archivo correspondiente:

cat /etc/wsl.conf
Enter fullscreen mode Exit fullscreen mode

El comando nos devolverá el contenido del archivo, que debe ser el siguiente:

[boot]
systemd=true
Enter fullscreen mode Exit fullscreen mode

Si el contenido no es ese, lo editamos con:

sudo nano /etc/wsl.conf
Enter fullscreen mode Exit fullscreen mode

... y lo actualizamos.

Para guardar los cambios salimos con Ctrl+X (te pedirá confirmar el guardado de datos).

El paso final en la configuración de la distribución es reiniciarla, para ello primero salimos:

exit
Enter fullscreen mode Exit fullscreen mode

y, acto seguido paramos la distro. Tienes diferentes maneras de parar la máquina virtual de la distribución Ubuntu:

  • Una vez realizado el ‘exit’: esperar al menos 8 segundos, después de este lapso de tiempo se habrá parado la distribución.
  • Realizar un apagado de la distribución:
wsl --terminate Ubuntu
Enter fullscreen mode Exit fullscreen mode
  • Realizar el shutdown del subsistema WSL:
wsl --shutdown
Enter fullscreen mode Exit fullscreen mode

Esta primera vez optamos por utilizar el shutdown de WSL.

Configurar el consumo de recursos de WSL

Opcionalmente podemos decidir la configuración de la virtualización.

En la consola CMD, crea el archivo:

notepad %UserProfile%\.wslconfig
Enter fullscreen mode Exit fullscreen mode

Y añádele el contenido:

[wsl2]
memory=8GB
processors=4
swap=2GB
Enter fullscreen mode Exit fullscreen mode

Para cambiar los parámetros a tu gusto tienes un enlace a Microsoft Learn al final del artículo.

Instalación de Docker en Ubuntu

Para continuar abrimos una consola Powershell.

A) Verificar uso de systemd en Ubuntu

Accedemos a la terminal de Ubuntu:

wsl -d Ubuntu
Enter fullscreen mode Exit fullscreen mode

Para verificar que el inicio está apuntando a systemd lanzamos el siguiente comando:

stat /sbin/init | grep "systemd"
Enter fullscreen mode Exit fullscreen mode

nos debería dar como resultado:

File: /sbin/init -> ../lib/systemd/systemd
Enter fullscreen mode Exit fullscreen mode

B) Instalar Docker en Ubuntu

Ahora vamos a instalar docker en la distribución Ubuntu (extraído de la web de Docker):

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
Enter fullscreen mode Exit fullscreen mode

Comprobamos que se ha instalado:

docker version
docker compose version
Enter fullscreen mode Exit fullscreen mode

C) Configuración del firewall en Ubuntu

El siguiente paso es configurar el firewall en la distribución Ubuntu:

sudo update-alternatives --config iptables
Enter fullscreen mode Exit fullscreen mode

y seleccionamos la opción '1' que corresponde a iptables-legacy.

Enlaces

Siguiente artículo:

Top comments (0)