wsl-labs GitHub

🧰 Referencia de la CLI de wslc#

Referencia completa de la línea de comandos de wslc (WSL Containers, WSL 2.9+), explorada a fondo sobre wslc 2.9.3. Para el enfoque general ver wslc-contenedores.md; para los casos de este repo, el catálogo de casos.

wslc es el motor de contenedores nativo de WSL. Su interfaz replica el subconjunto más usado de Docker. Binario: C:\Program Files\WSL\wslc.exe (se obtiene con wsl --update --pre-release).


🗺️ Estructura de la CLI#

flowchart TD
    W["wslc"] --> C["container"]
    W --> I["image"]
    W --> N["network"]
    W --> V["volume"]
    W --> R["registry"]
    W --> S["system → session"]
    W --> X["settings · version"]
    W -. "atajos de nivel superior" .-> AL["run · build · exec · logs · ps · pull · push · …"]

wslc tiene grupos de comandos (container, image, network, volume, registry, system) y atajos de nivel superior que apuntan a los subcomandos más habituales (por ejemplo wslc run == wslc container run, wslc build == wslc image build).

GrupoSubcomandos
containerrun · create · start · stop · kill · remove · list · logs · exec · attach · inspect · stats · export · prune
imagebuild · list · pull · push · tag · save · load · import · inspect · remove · prune
networkcreate · list · inspect · remove · prune
volumecreate · list · inspect · remove · prune
registrylogin · logout
system sessionenter · list · run · shell · terminate
(raíz)settings · version

🐳 Contenedores (wslc container …)#

run — crear y arrancar un contenedor#

wslc run [opciones] <imagen> [comando] [args...]
OpciónQué hace
-d, --detachEjecuta en segundo plano
--nameNombre del contenedor
-p, --publishPublica un puerto host:contenedor
-P, --publish-allPublica todos los puertos expuestos en puertos aleatorios
-e, --env / --env-fileVariables de entorno (KEY=VALUE) / desde archivo
--network / --network-aliasConecta a una red / alias en la red
-v, --volumeMonta un volumen o bind mount
-m, --memoryLímite de memoria (512M, 1G)
--cpusNº de CPU (0.5, 1, 2.5)
--gpusAñade GPUs (all para todas)
--shm-sizeTamaño de /dev/shm
-w, --workdirDirectorio de trabajo dentro del contenedor
-u, --userUsuario (name \uid \uid:gid)
-h, --hostname / --domainnameHostname / dominio
-i, --interactive / -t, --ttystdin abierto / TTY
--entrypointSobrescribe el entrypoint
--rmElimina el contenedor al detenerse
--stop-signalSeñal para detener
--dns / --dns-option / --dns-searchConfiguración DNS
-l, --labelMetadatos (KEY=VALUE)
--ulimitLímites (nofile=1024:2048)
--cidfileEscribe el id del contenedor en un archivo
--tmpfsMonta un tmpfs en una ruta
# Ejemplo: nginx con límites de recursos y una red
wslc run -d --name web --network mi-red -p 8080:80 -m 256M --cpus 0.5 nginx:alpine
Docker: docker run. Los flags -p, -e, -v, -m, --cpus, --network funcionan igual que en Docker.

create / start / stop / kill / remove#

ComandoQué haceDocker
wslc create [opciones] <imagen>Crea el contenedor sin arrancarlo (mismas opciones que run)docker create
`wslc start <id\nombre>`Arranca un contenedor creado/detenidodocker start
`wslc stop <id\nombre>`Detiene un contenedordocker stop
`wslc kill <id\nombre>`Envía SIGKILLdocker kill
`wslc remove <id\nombre> (rm`)Elimina un contenedor detenidodocker rm
wslc container pruneElimina todos los contenedores detenidosdocker container prune

list — listar contenedores (alias ls, ps)#

wslc list [opciones]
OpciónQué hace
-a, --allIncluye los detenidos
-f, --filterFiltra por condiciones
--formattable (por defecto) o json
-q, --quietSolo los ids
-n, --last / -l, --latestÚltimos N / el último creado
--no-truncNo trunca la salida
wslc ps                 # contenedores en ejecución
wslc ps -a --format json # todos, en JSON (útil para scripts)

logs — ver logs#

wslc logs [opciones] <id\|nombre>
OpciónQué hace
-f, --followSigue la salida en vivo
-n, --tail <N>Últimas N líneas
-t, --timestampsAñade marcas de tiempo
--since / --untilRango temporal (epoch o RFC3339)
wslc logs -n 50 -t web

exec — ejecutar en un contenedor vivo#

wslc exec [opciones] <id\|nombre> <comando> [args...]

Opciones: -d, -e/--env, --env-file, -i/--interactive, -t/--tty, -u/--user, -w/--workdir.

wslc exec -it web sh              # shell interactiva dentro del contenedor
wslc exec web env                 # ver variables de entorno

attach / inspect / stats / export#

ComandoQué haceDocker
wslc attach <id>Se conecta a stdin/stdout del contenedordocker attach
wslc inspect <id>Detalle JSON del contenedor (o imagen/red)docker inspect
wslc stats [-a] [<id>]Snapshot de CPU/memoria/red/E-S/PIDsdocker stats
wslc export <id>Exporta el filesystem del contenedor a un .tardocker export
wslc stats -a           # uso de recursos de todos los contenedores

🖼️ Imágenes (wslc image …)#

build — construir desde un Dockerfile#

wslc build [opciones] <ruta-contexto>
OpciónQué hace
-t, --tagEtiqueta de la imagen (nombre:tag)
-f, --fileRuta al Dockerfile (- = stdin)
--build-argVariables de build (KEY=VALUE)
--targetEtapa objetivo (multi-stage)
--no-cacheNo usar caché
--pullForzar pull de la imagen base
-l, --labelMetadatos
--verboseSalida detallada
wslc build -t wsl-labs/go-api:latest --target build containers/10-go-api

Resto de comandos de imagen#

ComandoQué haceDocker
wslc images / wslc image listLista imágenes localesdocker images
wslc pull <imagen:tag>Descarga una imagen de un registrodocker pull
wslc push <imagen:tag>Sube una imagen a un registrodocker push
wslc tag <origen> <destino>Reetiqueta una imagendocker tag
wslc save <imagen> > f.tarGuarda imágenes en un .tardocker save
wslc loadCarga imágenes desde un .tardocker load
wslc image import <tar>Importa una imagen desde un tarballdocker import
wslc image inspect <imagen>Detalle JSON de la imagendocker image inspect
wslc rmi <imagen>Elimina una imagendocker rmi
wslc image pruneElimina imágenes no usadasdocker image prune

🌐 Redes (wslc network …)#

ComandoQué hace
wslc network create [-d driver] [-o opt] [-l label] <nombre>Crea una red (driver por defecto bridge)
wslc network list (ls)Lista redes
wslc network inspect <nombre>Detalle de una red
wslc network remove <nombre> (rm)Elimina una o varias redes
wslc network pruneElimina todas las redes sin usar
wslc network create mi-red
wslc run -d --name db --network mi-red postgres:15
wslc run -d --name app --network mi-red -p 8000:8000 mi-app   # 'app' alcanza a 'db' por su nombre
Un stack multi-contenedor (app + base de datos) que en Docker harías con docker compose, en wslc se arma con una red + varios wslc run conectados por nombre. Es justo lo que hacen los casos platform de este repo.

💽 Volúmenes (wslc volume …)#

ComandoQué hace
wslc volume create [-d driver] [<nombre>]Crea un volumen. Driver guest (por defecto) o vhd (disco virtual)
wslc volume list (ls)Lista volúmenes
wslc volume inspect <nombre>Detalle de un volumen
wslc volume remove <nombre> (rm)Elimina volúmenes
wslc volume pruneElimina volúmenes locales no usados
# Persistir los datos de una base de datos entre reinicios del contenedor
wslc volume create pgdata
wslc run -d --name db -v pgdata:/var/lib/postgresql/data postgres:15
Los contenedores de base de datos crean volúmenes anónimos para sus datos. wslc volume ls los muestra; wslc volume prune limpia los que quedan huérfanos.

🔑 Registro (wslc registry …)#

ComandoQué haceDocker
wslc registry login (wslc login)Inicia sesión en un registrodocker login
wslc registry logout (wslc logout)Cierra sesióndocker logout

⚙️ Sistema y sesiones (wslc system session …)#

wslc corre los contenedores dentro de una sesión (una VM ligera de WSL, wslcsession.exe). Normalmente no hace falta gestionarla a mano.

ComandoQué hace
wslc system session listLista las sesiones activas
wslc system session enter <storage-path> [--name N]Entra a una sesión temporal (con almacenamiento propio)
wslc system session run <comando> [args]Ejecuta un comando en una sesión
wslc system session shellAbre una shell asociada a la sesión
wslc system session terminate <id>Finaliza una sesión
wslc system session list   # p.ej.  Id 1 · wslc-cli-<usuario>

🔧 Otros#

ComandoQué hace
wslc settingsAbre el archivo de configuración de wslc en el editor por defecto
wslc versionVersión de wslc (p. ej. wslc 2.9.3.0)
wslc <cmd> --help (-?)Ayuda de cualquier comando o subcomando

🔀 Equivalencias wslcdocker (resumen)#

Tareawslcdocker
Construir imagenwslc build -t n:t ctxdocker build
Correr contenedorwslc run -d -p H:C n:tdocker run
Listar contenedoreswslc ps / wslc listdocker ps
Ver logswslc logs -f <id>docker logs
Entrar al contenedorwslc exec -it <id> shdocker exec
Uso de recursoswslc statsdocker stats
Crear redwslc network createdocker network create
Crear volumenwslc volume createdocker volume create
Limpiar paradoswslc container prunedocker container prune
Login al registrowslc logindocker login
wslc no tiene compose ni up/down como comandos de CLI (en este repo, los botones Levantar/Bajar del panel llaman a los endpoints /api/wslc/up y /api/wslc/down, que por debajo ejecutan wslc run y wslc stop+remove).

🧭 Qué comandos usa el panel de wsl-labs#

El Control Center traduce cada botón a comandos wslc:

BotónComandos wslc que ejecuta
📦 Construirwslc build -t <imagen> <contexto> (por cada imagen del caso)
Levantarwslc network create <red> (si aplica) + wslc run -d --name … [--network …] [-p …] [-e …] por contenedor
Bajarwslc stop <c> + wslc remove <c> por contenedor + wslc network remove <red>
📄 Logswslc logs <contenedor-principal>
📊 Overviewwslc version + wslc images + wslc list + health por puerto
Todo lo que hace el panel lo puedes reproducir en la terminal con los comandos de esta referencia — y más: límites de recursos (-m, --cpus), volúmenes persistentes (-v), GPU (--gpus), exec, stats, etc.

🔗 Ver también#

Fuente: docs/wslc-cli-referencia.md