Contenedores en Windows, sin Docker Desktop
wsl-labs es un centro de control de contenedores sobre wslc, el motor
de contenedores que WSL trae de serie desde la versión 2.9. Panel web en
localhost:9092, launcher .exe para Windows y
12 casos reales portados de docker-labs: construir, levantar,
abrir y bajar cada stack desde una sola pantalla.
Qué hay dentro
Cuatro piezas que se apoyan en una sola fuente de verdad: el catálogo
containers/containers.config.json. El panel, el launcher y esta misma web
leen de ahí, así que ninguno puede prometer un caso que el repositorio no tenga.
Panel de control
Node.js con la librería estándar, escucha en localhost:9092. Construye
imágenes, levanta y baja contenedores y muestra la salida real de wslc.
Launcher para Windows
Un .exe en Go que comprueba WSL2, arranca el panel y abre el navegador.
Se distribuye con instalador Inno Setup desde Releases.
12 casos reales
APIs, bases de datos, mensajería, observabilidad, buscador y CI. Cada caso trae su Dockerfile, su README y sus límites de memoria y CPU.
Catálogo único
Imágenes, puertos, redes, volúmenes, límites y requisitos medidos viven en un solo JSON. Cambiarlo cambia el panel y esta web a la vez.
Cómo funciona
Windows nunca habla con los contenedores directamente: el panel llama a
wslc.exe, y ese binario es el que opera dentro de WSL. Por eso no hace falta
Docker Desktop ni un demonio aparte.
flowchart LR
subgraph WIN["Windows 11"]
L["Launcher .exe"]
B["Navegador"]
D["Panel Node.js :9092"]
end
subgraph WSLC["Motor de contenedores (wslc)"]
C1["contenedor · app"]
C2["contenedor · base de datos"]
N(["red wslc"])
C1 --- N --- C2
end
L --> D
B --> D
D -->|wslc.exe| WSLC
Empezar
Tres pasos desde una PowerShell. El paso 1 es el único que toca el sistema: activa el
canal preview de WSL, que es por donde viaja wslc.
1 · WSL con wslc
wsl --install
wsl --update --pre-release
wslc version
Requiere WSL 2.9 o superior.
2 · Clonar el repositorio
git clone https://github.com/vladimiracunadev-create/wsl-labs.git
cd wsl-labs
Sin dependencias que instalar: el panel usa solo Node.js.
3 · Levantar el panel
node dashboard-server/server.js
Abre http://localhost:9092 y, en cada caso: Construir, Levantar, Abrir.
Los 12 casos
Portados de docker-labs
y ejecutados con wslc. Los starter son de un solo contenedor; los
platform levantan aplicación y base de datos unidas por una red; los infra
son piezas de infraestructura que se usan tal cual. El tamaño de imagen y la RAM son
medidos, no estimados.
API Node.js
API REST mínima en Node.js (imagen node:20-alpine, http nativo).
API Python (Flask)
API REST en Flask (imagen python:3.12-alpine).
API Go
API REST en Go (net/http), imagen compilada multi-stage.
Nginx web
Servidor web/estático con Nginx (imagen nginx:alpine).
Cache Redis + app
App Node que consulta Redis (redis:7-alpine) por una red wslc.
API + PostgreSQL
API Python conectada a PostgreSQL (postgres:15) por una red wslc.
LAMP (PHP + MariaDB)
PHP+Apache con MariaDB por una red wslc (stack LAMP).
RabbitMQ (mensajería)
Broker RabbitMQ con panel de administración (rabbitmq:3-management).
Prometheus + Grafana
Observabilidad: Prometheus + Grafana por una red wslc.
App multi-servicio (Mongo)
Backend Node + MongoDB (mongo:7) por una red wslc.
Elasticsearch
Motor de búsqueda Elasticsearch 8 (nodo único, seguridad off).
Jenkins CI
Servidor de integración continua Jenkins LTS.
Qué necesita tu equipo
Rara vez se corren los 12 casos a la vez. El mínimo cubre WSL2, el panel y un caso ligero; el recomendado cubre los casos pesados.
| Recurso | Mínimo | Recomendado | Cómodo |
|---|---|---|---|
| RAM | 4 GB | 8 GB | 16 GB |
| CPU | 2 núcleos | 4 núcleos | 4 núcleos |
| Disco (imágenes) | ~7 GB sumando las 12 imágenes; las capas base compartidas reducen el disco real | ||
| Sistema | Windows 10 (2004+) o Windows 11 con WSL 2.9+ y wslc | ||
| Runtimes | Node.js 18+ para el panel · Go 1.21+ solo si compilas el launcher | ||
El caso más pesado es 11-elasticsearch (~2-3 GB de RAM). El detalle medido caso a caso está en requisitos.
wslc y Docker, lado a lado
Si vienes de Docker, los verbos son los mismos. Lo que cambia es quién ejecuta:
wslc viene con WSL y no necesita Docker Desktop ni una licencia.
| Tarea | Docker | wslc |
|---|---|---|
| Construir una imagen | docker build -t app . | wslc image build -t app . |
| Levantar un contenedor | docker run -d -p 8080:80 app | wslc container run -d -p 8080:80 app |
| Ver lo que corre | docker ps | wslc container ls |
| Leer los logs | docker logs app | wslc container logs app |
| Crear una red | docker network create red | wslc network create red |
La tabla completa está en la referencia de la CLI y en el mapeo de docker-labs a wslc.
Documentación
Todo el repositorio está publicado aquí como HTML: las guías, los cheatsheets y el README de cada caso. El índice completo está en documentación.
Guía de instalación
Instalar WSL 2.9, habilitar wslc y dejar el panel corriendo.
Manual de Usuario
El uso diario del panel, caso por caso, y su API REST.
Guía de contenedores con WSLC
Qué es wslc, su ciclo de vida y los comandos equivalentes a Docker.
Arquitectura
Cómo hablan Windows, el panel y el motor de contenedores.
Resolución de problemas
Los fallos que aparecen de verdad y cómo salir de ellos.
Portabilidad — mover imágenes y volúmenes a otro equipo
Mover imágenes, volúmenes y la distro entera a otro equipo.