Cargando...

Habilitar distro WSL 2 con Docker Engine en Windows

Si te estás aventurando en el mundo Docker y tienes Windows como sistema operativo, es bastante probable que te topes con algunos detalles a revisar, puesto que acá se encuentran la mayoría de retos.

¡Como es de costumbre, te contaré mi historia!

Era un día normal, solo me sentaría un momento frente al ordenador y haría un par de instalaciones, WSL (Windows Subsystem For Linux) con alguna distro y Docker ¿qué podría salir mal? me temo que, si ocurrieron problemas, pero no estoy solo, por lo que estás aquí, también te habrá pasado ¡Oops! pero no te preocupes, te paso la solución, que espero a ti también te funcione. Te cuento, me instalé unas 3 distros (Debian, Ubuntu y Kali) ¡Qué locura! fíjate que empecé a probar en Kali con un simple docker ps, por supuesto, para ver los procesos corriendo en Docker, aunque más bien me llevé el siguiente mensaje, que probablemente sea igual al tuyo.

WSL2 with Docker Engine is Disabled

Resulta que el comando docker no puede ser encontrado en distros con WSL versión 1. Lo cual, el mismo prompt nos recomienda convertir dicha distro a la versión de WSL 2 y activar la integración en las configuraciones de Docker Desktop. Déjame decirte que este procedimiento ya lo he hecho con Debian y Ubuntu y ha funcionado sin piedras en el camino. Te muestro cómo hacer esto para Kali Linux, que es a la vez, el mismo procedimiento para las demás distros. ¡Vamos a ello!


Revisar la versión de cada distro WSL

Ejecuta una terminal, con el CMD o Git Bash viene bien, ejecutamos WSL con los parámetros -l -v para obtener una lista detallada con su estado y versión.

C:\Users\Administrador> wsl -l -v
  NAME                   STATE           VERSION
* Debian                 Running         2
  Ubuntu-20.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2
  kali-linux             Running         1

Antes de todo, revisa que la configuración que tengas en tu Docker Desktop sea la siguiente y esté usando el motor basado en WSL 2.

Use the WSL 2 based engine

Puedes observar que kali-linux está en ejecución, pero no tiene activada la versión 2, esto también lo podemos encontrar desde la configuración de Docker Desktop.

Docker Desktop, Resources WSL Integration

Al habilitarlo, tendremos en la lista, la nueva distro Kali Linux.


Cambiar la versión de Kali Linux a la versión 2 de WSL

Ejecutar desde la terminal, la siguiente instrucción:

> wsl.exe --set-version Debian 2

Si tienes en ejecución la distro con Windows Terminal o directamente desde el WSL, este proceso se cerrará debido a que se estará ejecutando el cambio de versión.

Por otro lado, tu consola dirá algo como esto:

Conversión en curso, esto puede tardar unos minutos...
Para información sobre las diferencias clave con WSL 2, visita https://aka.ms/wsl2
C:\Users\Administrador> wsl.exe --set-version kali-linux 2

Conversión en curso, esto puede tardar unos minutos...
Para información sobre las diferencias clave con WSL 2, visita https://aka.ms/wsl2

Conversión completada.


Habilitar la distribución Kali para la integración con WSL

Para que aparezca la nueva distro, tendrás que refrescar, luego activar la nueva distro, por último tendrás que darle al botón "Apply & Restart", eso bastará para tener todo bien habilitado.

Enable Distro WSL2 with Docker Desktop

Bien, parece que todo es buena noticia, pues para que sea verídica, habrá que hacer una última prueba, y es tirar comandos docker en la distro Kali Linux.

┏━(Message from Kali developers)
┃
┃ This is a minimal installation of Kali Linux, you likely
┃ want to install supplementary tools. Learn how:
┃ ⇒ https://www.kali.org/docs/troubleshooting/common-minimum-setup/
┃
┗━(Run “touch ~/.hushlogin” to hide this message)

┌──(kali㉿DESKTOP-V88H2KJ)-[/mnt/c/Users/Administrador]
└─$ docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

┌──(kali㉿DESKTOP-V88H2KJ)-[/mnt/c/Users/Administrador]
└─$ docker run -d -p 80:80 docker/getting-started

Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
540db60ca938: Pull complete
0ae30075c5da: Pull complete
9da81141e74e: Pull complete
b2e41dd2ded0: Pull complete
7f40e809fb2d: Pull complete
758848c48411: Pull complete
23ded5c3e3fe: Pull complete
38a847d4d941: Pull complete
Digest: sha256:10555bb0c50e13fc4dd965ddb5f00e948ffa53c13ff15dcdc85b7ab65e1f240b
Status: Downloaded newer image for docker/getting-started:latest
5622e8575955dcd40aff098970dd2203c030f06edf1c50c8325a44a9ca4b826a

┌──(kali㉿DESKTOP-V88H2KJ)-[/mnt/c/Users/Administrador]
└─$ docker ps -a

CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS              PORTS                               NAMES
5622e8575955   docker/getting-started   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp   reverent_tereshkova

Docker Labs, getting started 127.0.0.1/tutorial

Conclusión

¡Se ha hecho!

  • Revisamos la versión de las distros, las listamos y vimos su estado.
  • Cambiamos la versión de una distro, en este caso, de Kali, a la versión 2 de WSL.
  • Habilitamos la distribución y lo integramos con WSL.
  • Realizamos pruebas donde creamos un contenedor y lo listamos.

Déjame saber si te interesa un minicurso de WSL 2 o algo relacionado a Docker.

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.