wsl-labs GitHub
WSL 2.9+ · motor wslc

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.

versión 0.4.1 Apache-2.0 Windows 11 + WSL2 Node.js sin dependencias launcher en Go
12
casos de contenedores
5
multi-contenedor con red
8 GB
RAM recomendada
64
páginas de documentación

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.

Si prefieres no clonar nada, descarga el instalador desde Releases: instala el launcher, que arranca el panel y abre el navegador por ti. Guía completa en la guía de instalación.

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.

01 - node-api un contenedor

API Node.js

API REST mínima en Node.js (imagen node:20-alpine, http nativo).

puerto 8101imagen 136 MBRAM rec. 256 MB
03 - python-api un contenedor

API Python (Flask)

API REST en Flask (imagen python:3.12-alpine).

puerto 8102imagen 62 MBRAM rec. 256 MB
10 - go-api un contenedor

API Go

API REST en Go (net/http), imagen compilada multi-stage.

puerto 8103imagen 15 MBRAM rec. 128 MB
06 - nginx-web un contenedor

Nginx web

Servidor web/estático con Nginx (imagen nginx:alpine).

puerto 8104imagen 62 MBRAM rec. 128 MB
04 - redis-cache app + base de datos

Cache Redis + app

App Node que consulta Redis (redis:7-alpine) por una red wslc.

puerto 8105imagen 175 MBRAM rec. 512 MB2 contenedoresred wslc-redis-net
05 - postgres-api app + base de datos

API + PostgreSQL

API Python conectada a PostgreSQL (postgres:15) por una red wslc.

puerto 8106imagen 493 MBRAM rec. 1024 MB2 contenedoresred wslc-pg-net
02 - php-lamp app + base de datos

LAMP (PHP + MariaDB)

PHP+Apache con MariaDB por una red wslc (stack LAMP).

puerto 8107imagen 808 MBRAM rec. 1024 MB2 contenedoresred wslc-lamp-net
07 - rabbitmq infraestructura

RabbitMQ (mensajería)

Broker RabbitMQ con panel de administración (rabbitmq:3-management).

puerto 8109imagen 252 MBRAM rec. 1024 MB
08 - prometheus-grafana infraestructura

Prometheus + Grafana

Observabilidad: Prometheus + Grafana por una red wslc.

puerto 8110imagen 1406 MBRAM rec. 1536 MB2 contenedoresred wslc-obs-net
09 - multi-service app + base de datos

App multi-servicio (Mongo)

Backend Node + MongoDB (mongo:7) por una red wslc.

puerto 8112imagen 1012 MBRAM rec. 1024 MB2 contenedoresred wslc-multi-net
11 - elasticsearch infraestructura

Elasticsearch

Motor de búsqueda Elasticsearch 8 (nodo único, seguridad off).

puerto 8113imagen 1410 MBRAM rec. 3072 MB
12 - jenkins infraestructura

Jenkins CI

Servidor de integración continua Jenkins LTS.

puerto 8114imagen 490 MBRAM rec. 2048 MB

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.

RecursoMínimoRecomendadoCómodo
RAM4 GB8 GB16 GB
CPU2 núcleos4 núcleos4 núcleos
Disco (imágenes)~7 GB sumando las 12 imágenes; las capas base compartidas reducen el disco real
SistemaWindows 10 (2004+) o Windows 11 con WSL 2.9+ y wslc
RuntimesNode.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.

TareaDockerwslc
Construir una imagendocker build -t app .wslc image build -t app .
Levantar un contenedordocker run -d -p 8080:80 appwslc container run -d -p 8080:80 app
Ver lo que corredocker pswslc container ls
Leer los logsdocker logs appwslc container logs app
Crear una reddocker network create redwslc 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.