Usar Docker Engine en Windows (sin Docker Desktop)

Guía práctica para instalar y usar Docker Engine en Windows a través de WSL2, evitando la licencia de Docker Desktop.
docker wsl2 windows devops
03-11-2025

Introducción

Esta guía explica cómo instalar y usar Docker Engine (el daemon de Docker para Linux) en un PC con Windows 10/11 a través de WSL2, sin instalar Docker Desktop.

¿Por qué Docker Engine y no Docker Desktop?

  • Docker Engine: es el daemon + CLI “clásico” de Linux; libre (Apache 2.0).
  • Docker Desktop: añade GUI e integraciones, pero su licencia puede requerir suscripción en ciertos usos empresariales.

Objetivo: correr Docker Engine dentro de Ubuntu (WSL2) y manejarlo desde la terminal de esa distro o, opcionalmente, desde PowerShell apuntando al daemon de WSL2.


Requisitos previos

  • Windows 10/11 con WSL2 habilitado.
  • Ubuntu instalado en WSL2.
  • Permisos de administrador para una vez (activar WSL).
  • Conexión a Internet para instalar paquetes.

Arquitectura recomendada

Windows
 └─ WSL2 (Ubuntu)
     ├─ systemd (habilitado)
     └─ Docker Engine (dockerd) + docker CLI + buildx + compose v2

Consejo: desarrolla dentro del sistema de archivos de WSL (~/project) para mejor rendimiento que en /mnt/c/....


Instalación paso a paso

1) Activar WSL2

Ejecuta en PowerShell (Administrador):

wsl --install
# Si ya lo tienes:
# wsl --update
# wsl --set-default-version 2

Instala Ubuntu desde Microsoft Store (o wsl --install -d Ubuntu).

2) Habilitar systemd en WSL

En Ubuntu (WSL):

sudo nano /etc/wsl.conf

Añade:

[boot]
systemd=true

Luego en PowerShell:

wsl --shutdown

Vuelve a abrir Ubuntu.

3) Instalar Docker Engine (repo oficial)

En Ubuntu (WSL):

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

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /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 $UBUNTU_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4) Arrancar y habilitar Docker

sudo systemctl enable --now docker
systemctl status docker

5) Usar Docker sin sudo

sudo usermod -aG docker $USER
newgrp docker

Prueba:

docker run hello-world

Usar Docker desde Windows

Opción A — Simple: usar la terminal de Ubuntu (WSL)

Abre Ubuntu y ejecuta docker .... Accede a tu app en http://localhost:<puerto> si publicas puertos con -p.

Opción B — PowerShell apuntando al daemon de WSL (avanzado)

Solo si lo necesitas. Exponer el daemon por TCP sin TLS es un riesgo, úsalo en entornos controlados.

En Ubuntu:

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

Contenido:

{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],
  "experimental": true
}

Reinicia:

sudo systemctl restart docker

En PowerShell:

$env:DOCKER_HOST="tcp://127.0.0.1:2375"
docker info

Seguridad: evita exponer 2375 si no es imprescindible. Prefiere la Opción A.


Docker Compose v2

Ya viene como subcomando:

docker compose version
docker compose up -d

Buenas prácticas y rendimiento

  • Trabaja en ~/projects/... dentro de WSL para builds más rápidos.
  • Publica puertos con -p 8080:80 y usa 0.0.0.0 en tu app dentro del contenedor.
  • Activa BuildKit si lo necesitas:
    export DOCKER_BUILDKIT=1
    docker build -t myimage .

Solución de problemas

  • Cannot connect to the Docker daemon

    • systemctl status docker
    • sudo systemctl restart docker
    • Confirma systemd=true en /etc/wsl.conf y wsl --shutdown.
  • Pide sudo

    • Asegúrate de estar en el grupo docker: groups → debe incluir docker.
    • Ejecuta sudo usermod -aG docker $USER y newgrp docker.
  • Puertos inaccesibles

    • Asegura -p host:container.
    • Accede desde Windows a http://localhost:<puerto>.

FAQ

  • ¿Necesito Docker Desktop? No, con WSL2 + Docker Engine es suficiente.
  • ¿Compose v2? Sí, es docker compose, no docker-compose.
  • ¿VS Code? Usa Remote - WSL para trabajar dentro de Ubuntu (WSL).
  • ¿Coste? Docker Engine es OSS; evitas la licencia de Docker Desktop.