- WSL2 ofrece un kernel Linux real en Windows 11, ideal para ejecutar Docker Desktop con contenedores Linux de alto rendimiento.
- La integración de Docker Desktop con WSL2 permite desarrollar, depurar y desplegar aplicaciones usando VS Code, Git y bases de datos como si fueran nativas de Linux.
- Almacenar los proyectos dentro del sistema de archivos de WSL2 y no en C: mejora drásticamente el rendimiento de Docker y evita cuellos de botella de I/O.
- Con una buena configuración de seguridad, proxy y gestión de recursos, Docker Desktop y WSL2 constituyen un entorno sólido tanto para desarrollo personal como empresarial.

Trabajar con contenedores Docker en Windows 11 ya no es algo reservado a gurús de sistemas: gracias a Docker Desktop y WSL2 es posible montar un entorno de desarrollo potente, ligero y muy parecido a un Linux nativo sin salir de tu equipo Windows. Con la combinación adecuada de configuración, herramientas y buenas prácticas, puedes compilar, depurar y desplegar aplicaciones en contenedores Linux y Windows desde la misma máquina, aprovechando al máximo tu hardware.
El objetivo de esta guía es ayudarte a dejarlo todo fino: instalar y ajustar WSL2, poner en marcha Docker Desktop usando el motor de WSL 2, integrar VS Code, configurar Git, bases de datos y contenedores de desarrollo remotos, e incluso afinar rendimiento, seguridad y solución de problemas típicos (proxy, rutas lentas, almacenamiento, etc.). Todo explicado paso a paso, en castellano de España y con un enfoque muy práctico.
Conceptos clave: contenedores Docker, WSL2 y Docker Desktop
Antes de ponerte a instalar cosas a lo loco, merece la pena entender qué aporta cada pieza. Docker es una plataforma que permite empaquetar aplicaciones junto con todas sus dependencias (librerías, frameworks, binarios, configuración…) en unidades ligeras llamadas contenedores. Estos contenedores se basan en imágenes y garantizan que la aplicación se ejecute igual en cualquier máquina, sin pelearte con “en mi equipo funciona”.
A diferencia de una máquina virtual clásica, un contenedor no arranca un sistema operativo completo, sino que comparte el kernel del host (en este caso Linux) y aísla procesos mediante namespaces y cgroups. El resultado son paquetes más pequeños, arranques casi instantáneos y un uso de recursos mucho más eficiente, lo que se nota especialmente cuando trabajas con muchos microservicios o pipelines de CI/CD.
WSL2 (Windows Subsystem for Linux 2) es la segunda generación del subsistema Linux de Microsoft y añade un kernel Linux real ejecutándose en una máquina virtual ligera. Esto supone un salto enorme frente a WSL1: mejor rendimiento de disco y red, mayor compatibilidad con herramientas nativas de Linux y, lo que nos interesa aquí, soporte completo para contenedores Docker basados en Linux.
Docker Desktop para Windows actúa como el pegamento que une todo: proporciona una interfaz gráfica para gestionar contenedores, imágenes, volúmenes y redes, expone una CLI totalmente compatible con Docker y, cuando habilitas el motor basado en WSL2, te permite ejecutar contenedores Linux y Windows en el mismo equipo usando el kernel de Linux que corre dentro de WSL2.
Requisitos previos y preparación del sistema
Para que Docker Desktop y WSL2 funcionen bien en Windows 11 necesitas cumplir una serie de requisitos de hardware y software. Es importante revisarlos para evitar errores raros durante la instalación o al arrancar el demonio de Docker.
A nivel de sistema operativo, se recomienda usar Windows 11 o una versión reciente de Windows 10 con soporte para WSL2 (build 20262 o superior). Puedes comprobar la versión pulsando Windows + R, escribiendo winver y comprobando la compilación instalada. En Windows 11, el comando simplificado wsl --install está disponible y facilita mucho la configuración inicial.
En la parte de virtualización, asegúrate de que el soporte de virtualización por hardware (Intel VT-x, AMD-V) esté habilitado en la BIOS/UEFI. Windows usará la característica “Plataforma de máquina virtual”, imprescindible para WSL2 y para el backend de Docker cuando no se usa Hyper-V tradicional. Si vas a usar el backend alternativo con Hyper-V, necesitarás además una edición Pro, Enterprise o equivalente.
También conviene revisar los requisitos oficiales de Docker Desktop (CPU de 64 bits, mínimo 4 GB de RAM, permisos de administrador y espacio de disco suficiente para imágenes y contenedores). Para instalaciones específicas en Windows Server, hay guías independientes, pero en este artículo nos centraremos en entornos de escritorio con Windows 11.
Instalar y configurar WSL2 en Windows 11
El primer paso serio para tener Docker fino en Windows 11 es dejar WSL2 correctamente instalado y configurado. Sin un WSL2 bien montado, el backend de Docker para Linux no irá fluido o directamente no arrancará.
En Windows 11, la vía rápida es usar PowerShell como administrador y ejecutar el comando:
wsl --install
Este comando automatiza varias tareas críticas: habilita las características opcionales “Subsistema de Windows para Linux” y “Plataforma de máquina virtual”, descarga e instala el kernel de Linux más reciente, establece WSL2 como versión por defecto y añade de forma automática una distribución de Ubuntu (si todo va bien, con un reinicio intermedio).
Si quieres una distro distinta o haces la instalación en Windows 10, puedes activar las características manualmente desde “Activar o desactivar características de Windows” o vía PowerShell, y luego instalar la distribución que prefieras (Ubuntu, Debian, Fedora, etc.) desde Microsoft Store. Más tarde puedes forzar que use WSL2 con:
wsl --set-default-version 2
Una vez que la distribución se instala por primera vez, al abrirla desde el menú Inicio se te pedirá que crees un nombre de usuario y una contraseña de Linux. No están ligados a tu usuario de Windows y, cuando escribas la contraseña, no verás caracteres en pantalla (es lo normal en terminal). Ese usuario será administrador dentro de la distro y podrá ejecutar comandos con sudo.
Si en algún momento olvidas la contraseña de la distro, puedes entrar con el usuario root desde PowerShell ejecutando wsl -u root (o wsl -d <Distro> -u root si no es la predeterminada) y cambiar la contraseña con passwd <usuario>. Tras actualizarla, sales con exit y listo.
Es muy recomendable actualizar los paquetes nada más instalar, especialmente si vas a usar la distro como entorno de desarrollo. En Ubuntu o Debian, desde la propia terminal Linux:
sudo apt update && sudo apt upgrade
Instalación de Docker Desktop con backend WSL2
Con WSL2 operativo, ya puedes ir a por Docker Desktop. La idea es instalar Docker usando el motor de WSL2 en lugar de apoyarte en Hyper-V, lo que suele ofrecer mejor rendimiento, menor consumo de recursos y una integración mucho más natural con las herramientas de Linux.
Descarga el instalador de Docker Desktop desde la web oficial de Docker, asegurándote de seleccionar la variante para Windows. El instalador es único para varias plataformas, así que revisa que sea el ejecutable correcto para tu sistema, no el de Linux ni macOS.
Al lanzar el instalador de Docker Desktop, tendrás un asistente bastante simple. Marca la opción de “Usar el motor basado en WSL 2” (o similar, dependiendo de la versión) para que Docker aproveche el backend de WSL2 y no el de Hyper-V. También puedes crear el acceso directo en el escritorio para tenerlo más a mano.
El proceso de instalación tarda unos minutos, dependiendo de la máquina, ya que se copian binarios, servicios y se configuran integraciones. Una vez termine, te pedirá reiniciar el sistema. Tras el segundo arranque, abre Docker Desktop desde el menú Inicio o con el icono de escritorio y acepta los términos de licencia (es gratuito para uso personal y pequeñas empresas).
Si aún no tenías WSL2 correctamente completado, Docker te mostrará un aviso para que descargues e instales el kernel de WSL2. Sigue el enlace que facilita el propio programa, instala el paquete del kernel, reinicia de nuevo y, al volver a abrir Docker Desktop, el backend de WSL2 debería quedar listo.
Verificación y ajustes básicos de Docker Desktop con WSL2
Con Docker Desktop lanzado, toca ajustar y comprobar que todo funciona bien. Desde el icono de Docker en la bandeja del sistema (iconos ocultos), haz clic derecho y entra en “Settings” (Configuración).
En la sección General, verifica que la opción equivalente a “Use the WSL 2 based engine” está activada. Esto asegura que los contenedores Linux se ejecuten sobre el kernel de WSL2 y no se cree una máquina virtual adicional con Hyper-V, lo que ahorra memoria y CPU.
Después, entra en la sección Resources > WSL Integration. Aquí verás el listado de distribuciones WSL disponibles (Ubuntu, Debian, etc.) y podrás elegir en cuáles habilitar la integración de Docker. Activa tu distro principal (por ejemplo, Ubuntu) para que desde esa distribución puedas ejecutar comandos Docker directamente.
Para confirmar que la CLI de Docker responde, abre una terminal WSL (Ubuntu, por ejemplo) y ejecuta:
docker --version
Si el comando devuelve la versión del cliente y servidor Docker, el entorno está listo. Como prueba adicional, puedes lanzar la típica imagen de prueba “hello-world” con:
docker run hello-world
Si ves el mensaje de bienvenida de Docker dentro de la terminal Linux, significa que Docker Desktop está respondiendo a través del backend WSL2 y es capaz de descargar imágenes desde el registro oficial y ejecutarlas correctamente.
Rendimiento: por qué es clave usar WSL2 y la ruta de archivos correcta
Uno de los errores más frecuentes que hace que Docker vaya “a pedales” en Windows es mezclar WSL1, WSL2 y rutas de archivos de forma incorrecta. Un entorno mal montado puede disparar los tiempos de compilación y el acceso a disco dentro de los contenedores.
Para aprovechar todo el rendimiento de Docker Desktop en Windows 11, asegúrate de que estás usando WSL2 (no WSL1) para la distribución que integra Docker y, sobre todo, almacena tu código fuente dentro del sistema de archivos de WSL y no en una unidad de Windows montada en /mnt/c o similares.
La recomendación práctica es sencilla: en tu terminal de la distro WSL, ubica tus proyectos bajo tu directorio /home/<usuario>, por ejemplo /home/miusuario/proyectos. Si quieres ver esos archivos desde Windows, puedes abrir el explorador con:
explorer.exe .
Detrás de esto hay un motivo de rendimiento claro: cuando los contenedores acceden a archivos ubicados en el sistema de ficheros interno de WSL2, el I/O es mucho más rápido que cuando se trafica con rutas tipo C:\ montadas bajo /mnt/c. Para proyectos grandes (Node, Python, Java, etc.) la diferencia entre uno y otro enfoque es muy notable.
Gestión de distribuciones WSL y almacenamiento de Docker
Si vas a trabajar en serio con WSL2, es probable que acabes usando más de una distribución (Ubuntu para desarrollo, otra para pruebas, etc.). Puedes listar las distros instaladas y su versión de WSL con:
wsl -l -v
Si alguna de ellas sigue usando WSL1, puedes migrarla a WSL2 con:
wsl --set-version NombreDistro 2
En cuanto al almacenamiento de Docker dentro de WSL, Docker Desktop crea dos distribuciones especiales para sus propios datos: docker-desktop y docker-desktop-data. Estas se exponen también como rutas de red:
- \\wsl$\docker-desktop
- \\wsl$\docker-desktop-data
Si necesitas localizar esas carpetas desde Windows, puedes abrir tu distro WSL, ejecutar explorer.exe . y luego navegar a \\wsl\<Distro>\mnt\wsl (sustituyendo <Distro> por el nombre real, por ejemplo Ubuntu-24.04) para ver dónde residen esos datos.
Es importante ser consciente de dónde se almacenan imágenes y volúmenes, porque ocupan espacio en disco y, si usas WSL2 intensivamente, el tamaño del fichero de la VM puede crecer bastante. Siempre es buena idea revisar periódicamente imágenes y contenedores que ya no necesitas.
Integración con VS Code: desarrollo y depuración en contenedores
Una de las combinaciones más potentes con Docker y WSL2 es usar Visual Studio Code como entorno de desarrollo principal. VS Code soporta directamente el trabajo remoto en WSL y en contenedores de desarrollo, por lo que puedes editar, compilar y depurar dentro de un entorno Linux aislado sin salir de Windows.
Para montar este flujo de trabajo, instala VS Code en Windows y luego añade tres extensiones clave:
- Remote – WSL: permite abrir carpetas ubicadas en tu distro WSL directamente en VS Code.
- Dev Containers (antes Remote – Containers): permite abrir la carpeta de un proyecto dentro de un contenedor de desarrollo definido por
Dockerfileydevcontainer.json. - Docker: añade paneles y comandos para gestionar imágenes, contenedores, volúmenes y registros desde VS Code.
Un flujo típico sería algo así: primero, desde tu terminal WSL, clonas un repositorio de tu proyecto (por ejemplo, un Django de ejemplo) con:
git clone https://github.com/<usuario>/helloworld-django.git
Luego entras en la carpeta del proyecto con cd helloworld-django y abres VS Code apuntando a esa ruta con:
code .
Si la extensión WSL está activa, verás en la barra inferior el indicador verde señalando que estás conectado a la distro Linux, no a la sesión de Windows. Desde ahí, puedes usar la Paleta de Comandos (Ctrl + Shift + P) y ejecutar “Dev Containers: Reopen in Container” si ya estás en una carpeta WSL, o “Dev Containers: Open Folder in Container…” para elegir otra carpeta (incluso a través del recurso \\wsl$).
Al seleccionar una configuración de contenedor predeterminada (por ejemplo, “Python 3” para proyectos Django), VS Code generará la carpeta .devcontainer con un Dockerfile y un devcontainer.json. VS Code levantará un contenedor de desarrollo, reconstruirá la imagen si hace falta y abrirá una nueva ventana conectada a ese contenedor.
Dentro del contenedor, el terminal integrado de VS Code mostrará que estás en Linux (puedes comprobarlo con uname) y la versión de Python vendrá determinada por la imagen de contenedor, no por la que tengas instalada en tu distro WSL. Esto te permite tener entornos de desarrollo repetibles y aislados para cada proyecto.
Para depurar tu aplicación desde VS Code, ve a la pestaña “Ejecutar y depurar”, elige la configuración adecuada (por ejemplo, “Django”) y VS Code creará un launch.json con los parámetros de arranque. Pulsando F5 se arrancará el servidor de desarrollo dentro del contenedor y podrás abrir tu aplicación en el navegador (por ejemplo, en http://127.0.0.1:8000/).
Uso básico de Docker en Windows 11

Una vez que Docker Desktop está en marcha, tanto desde PowerShell como desde WSL puedes usar los comandos estándar de Docker para gestionar imágenes y contenedores. Esto te permitirá ir más allá de las pruebas básicas y montar servicios reales.
Los comandos más utilizados al principio suelen ser:
docker: muestra la lista de comandos disponibles.docker <comando> --help: documentación breve de cada comando.docker image ls --all: listado de todas las imágenes almacenadas en tu sistema.docker container ls --allodocker ps -a: muestra todos los contenedores, en ejecución o detenidos.docker info: información global de la instalación de Docker (backend, memoria, número de contenedores, etc.).
Desde la interfaz gráfica de Docker Desktop también puedes buscar imágenes en Docker Hub, hacer “pull” para descargarlas, arrancar nuevos contenedores, revisar uso de CPU/RAM o inspeccionar logs. Es una forma cómoda de empezar si aún no te sientes del todo suelto con la línea de comandos.
Conviene recordar que no todas las imágenes son igual de fiables o seguras. Docker Desktop incluye análisis de vulnerabilidades para algunas imágenes, pero en general es buena práctica basarte en imágenes oficiales o bien mantenidas, revisar las etiquetas (tags) y evitar imágenes obsoletas con componentes desactualizados.
Buenas prácticas de WSL2 y contenedores para desarrollo
Para un entorno de desarrollo estable y cómodo en el tiempo, no basta con que “arranque”, conviene seguir una serie de buenas prácticas tanto en WSL2 como en Docker Desktop.
En WSL2, mantén el kernel y las distros actualizados usando wsl --update desde Windows y el gestor de paquetes (apt, dnf, etc.) dentro de cada distro. Usa usuarios no root para el trabajo diario, reserva el root para tareas administrativas específicas y controla el consumo de recursos si ejecutas cargas pesadas (puedes limitar memoria y CPU de WSL2 con archivos de configuración).
En desarrollo con contenedores, intenta que tu código y herramientas se encuentren en el mismo “lado” (Linux o Windows) para evitar cuellos de botella de I/O por usar sistemas de archivos cruzados. Si compilas dentro de contenedores, coloca los proyectos en el sistema de ficheros de WSL2 y accede desde Docker usando volúmenes directos.
Para entornos corporativos o producción, es imprescindible complementar Docker con herramientas de orquestación como Kubernetes y aplicar políticas de seguridad adicionales (escaneo de imágenes, control de acceso a registros privados, rotación de credenciales, etc.). Empresas especializadas pueden ayudarte a diseñar arquitecturas de desarrollo y despliegue, integrando WSL2, Docker, CI/CD y servicios cloud (Azure, AWS) con las debidas medidas de ciberseguridad.
En el plano de seguridad dentro de WSL2, aunque corre en una VM ligera, sigues necesitando aplicar parches de seguridad, usar firewalls y proteger tanto el host Windows como las distros Linux. Asegúrate también de que las aplicaciones de contenedores no exponen puertos o servicios innecesarios hacia el exterior de tu red.
Interoperabilidad entre Windows y Linux en WSL
Uno de los puntos fuertes de WSL2 es la buena convivencia entre comandos de Windows y Linux. Puedes mezclar herramientas de ambos mundos en la misma tubería, lo que resulta muy útil para scripts y automatizaciones.
Desde una terminal de Windows (PowerShell o CMD), puedes lanzar comandos Linux a través de wsl. Por ejemplo, para listar el contenido de C:\temp usando ls -la de Linux:
wsl ls -la
También puedes combinar filtros de ambos lados, por ejemplo:
wsl ls -la | findstr "git"
O al revés, usar comandos de Windows desde WSL añadiendo .exe. Por ejemplo, para editar el fichero .bashrc de tu usuario con el bloc de notas de Windows:
notepad.exe .bashrc
Esta interoperabilidad facilita tareas como filtrar la salida de ipconfig.exe con grep, abrir editores gráficos desde Linux, o trabajar con archivos de ambos sistemas sin tener que cambiar de ventana constantemente.
Configuración de Git, bases de datos y GPU en WSL2
Más allá de Docker, un entorno de desarrollo moderno con WSL2 suele incluir control de versiones con Git, bases de datos y, en algunos casos, aceleración por GPU para tareas de machine learning o cálculo intensivo.
Para Git, la recomendación es trabajar dentro de WSL2 usando la CLI de Git de Linux, conectando con GitHub, GitLab o similares mediante claves SSH o gestores de credenciales. VS Code se integra muy bien con Git y permite gestionar ramas, commits y conflictos de forma visual.
En cuanto a bases de datos, puedes instalar y gestionar en WSL2 motores como MySQL, PostgreSQL, MongoDB, Redis o SQLite, y conectar tus contenedores a ellas o al revés. Existen guías específicas para ejecutar cada una de estas bases en WSL2 aprovechando su rendimiento casi nativo.
Si trabajas con IA o cómputo de alto rendimiento, WSL2 admite aceleración de GPU en Windows 11 con los drivers adecuados. Esto te permite ejecutar frameworks como TensorFlow o PyTorch en Linux, dentro de WSL2 o incluso en contenedores Docker, utilizando directamente la tarjeta gráfica del equipo.
Todo este ecosistema puede integrarse con pipelines CI/CD y servicios cloud, de manera que lo que desarrollas y pruebas en tu portátil Windows con WSL2 y Docker se parezca muchísimo al entorno que luego desplegarás en producción (en contenedores, Kubernetes o servicios gestionados).
Solución de problemas frecuentes con Docker Desktop y WSL2
Por muy bien que lo montes, tarde o temprano aparecerán problemas. Conocer los fallos típicos y cómo resolverlos te ahorra muchos dolores de cabeza, especialmente en entornos corporativos con restricciones de red.
Un caso clásico es el contexto de Docker “wsl” heredado de versiones técnicas antiguas de Docker para WSL. Si ejecutas docker context ls y ves un contexto llamado wsl, es probable que ya esté obsoleto y te cause errores tipo “open //./pipe/docker_wsl: el sistema no encuentra el archivo especificado”.
La solución pasa por borrar ese contexto viejo con:
docker context rm wsl
Después de eliminarlo, Docker utilizará el contexto por defecto tanto para Windows como para WSL2, evitando esos errores de conexión al demonio de Docker por tuberías que ya no existen.
Otro problema muy habitual es trabajar detrás de un proxy corporativo que requiere autenticación con usuario:contraseña. Docker Desktop suele dar errores al incluir credenciales en las variables de entorno HTTP_PROXY o en la configuración directa del programa, mostrando mensajes del tipo “proxy http no válido en la configuración del usuario: must not include credentials”.
En estos casos, hay varias opciones algo más seguras: usar un proxy autenticador externo (como CNTLM) que gestione las credenciales y exponga un proxy local sin usuario/contraseña, configurar el proxy en Windows y Docker sin incrustar credenciales en la URL, o usar almacenes de credenciales específicos. Editar a mano settings.json o config.json de Docker Desktop para forzar usuario:contraseña en la URL suele provocar que Docker no arranque o que ignore esa configuración.
Si lo que te falla es la instalación de WSL2 (errores al ejecutar wsl --install o al iniciar la distro), conviene revisar la guía de solución de problemas de WSL: comprobar que las características de Windows están bien habilitadas, que el kernel de WSL2 se ha instalado correctamente y que el sistema está actualizado con los últimos parches.
Para otros problemas más puntuales (rutas de almacenamiento de Docker, montajes de discos externos, ejecución de aplicaciones GUI de Linux, etc.), la documentación oficial de WSL y las issues de sus repositorios contienen ejemplos de comandos como wsl --mount y configuraciones específicas para cada caso.
Con todo lo visto, tienes una base muy sólida para montar un entorno de desarrollo moderno en Windows 11 apoyado en WSL2, Docker Desktop y VS Code: podrás trabajar con contenedores Linux casi como si estuvieras en una distribución nativa, integrar Git y bases de datos, usar aceleración de GPU cuando la necesites y, sobre todo, hacerlo con un rendimiento y una flexibilidad muy superiores a la virtualización tradicional, manteniendo un buen nivel de seguridad y control sobre tus recursos.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.
