Skip to main content

Translate Docker commands and Compose files to wslc, the native WSL container runtime

Project description

docker2wslc

Translate Docker commands, Compose files and dev container configs to wslc — the native Linux container runtime built into the Windows Subsystem for Linux, which runs containers on Windows 11 without Docker Desktop.

No network calls, no daemon, no telemetry. Pure rule-driven translation.

pip install docker2wslc          # translation only
pip install 'docker2wslc[yaml]'  # + Compose analysis

Convert a command

$ docker2wslc convert docker run --gpus all --restart always -p 8080:80 nginx
wslc run --device nvidia.com/gpu=all -p 8080:80 nginx

Migration notes
  WARN  Restart policies are not implemented in the wslc preview. Flag dropped — use a
        Windows scheduled task or a wrapper script for auto-restart.
  INFO  GPU access in wslc goes through the Container Device Interface. Use
        `--device nvidia.com/gpu=all` instead of `--gpus`.

Commands come from arguments, a file, or stdin:

docker2wslc convert docker ps -a
docker2wslc convert --file deploy.sh
cat deploy.sh | docker2wslc convert

Analyse a Compose file

wslc has no Compose runtime. This turns each service into an equivalent wslc run and tells you exactly what cannot be carried over:

$ docker2wslc compose docker-compose.yml
# wslc has no Compose runtime. Equivalent commands:

wslc volume create pgdata
wslc network create backend

# service: web
wslc run -d --name web -e NGINX_HOST=localhost -p 8080:80 --network backend nginx:alpine
  x depends_on: No dependency ordering. Start services in order yourself and add readiness waits.
  x restart: No restart policies in the wslc preview.

# service: db
wslc run -d --name db -v pgdata:/var/lib/postgresql/data postgres:16-alpine
  x healthcheck: wslc has no healthcheck support; depends_on conditions relying on it cannot work.

Lint a repository

Scans for docker-compose.y*ml, compose.y*ml and devcontainer.json:

docker2wslc lint .

Use in CI

Exit codes are meaningful, so this works as a gate:

Code Meaning
0 Fully compatible
1 Degraded — flags dropped or rewritten, still runnable
2 Unmigratable — Compose, Swarm, buildx, or a parse failure
- run: pip install 'docker2wslc[yaml]'
- run: docker2wslc lint .        # fails the job on exit 2

Python API

from docker2wslc import translate, analyse

result = translate("docker run --platform linux/amd64 -it ubuntu bash")
print(result.output)      # wslc run -it ubuntu bash
print(result.exit_code)   # 1
for note in result.notes:
    print(note.severity, note.text)

report = analyse(open("docker-compose.yml").read())
print(report.as_dict())

--json on any subcommand gives the same structure for shell pipelines.

What wslc cannot do

Worth knowing before you migrate. These are runtime limitations, not gaps in this tool:

  • No Compose runtime — translate services by hand, see the migration guide
  • No restart policies — use a scheduled task
  • No --platform — host architecture only
  • No healthchecks — so depends_on conditions cannot work
  • No Docker socket or Engine APITestcontainers, Portainer and act cannot attach
  • No buildx / bake — single-platform wslc build only
  • GPU via CDI--device nvidia.com/gpu=all, not --gpus all

CLI-driven tooling ports to wslc. API-driven tooling does not. That single distinction explains most migration surprises — including why VS Code Dev Containers does work once you set dev.containers.dockerPath to wslc.

Docs

Accuracy

Rules target the 2026-07 wslc public preview and live in a single rules.json shared by the Python package, the npm CLI, the MCP server and the VS Code extension. wslc is a moving target; if you hit a mapping that is wrong, open an issue with the command and the actual wslc output.

MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker2wslc-0.1.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docker2wslc-0.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file docker2wslc-0.1.0.tar.gz.

File metadata

  • Download URL: docker2wslc-0.1.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for docker2wslc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 06945c9ea44abe502ddd02ad6cd78f9dea61909ae014c1e11d3fc95e62346ffc
MD5 f4c46a267380142a98717f33bf395d8c
BLAKE2b-256 9731bf1dce5321ff8a56d9a221af438af330c6984568de6471c857adbc61c542

See more details on using hashes here.

File details

Details for the file docker2wslc-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: docker2wslc-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for docker2wslc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b6d5214ac8082489fe349af20cf4f07dffe3e372d32406f13bb4d0f13097353
MD5 759da4868635e1d87f9805d03e125743
BLAKE2b-256 5e6640f7e8895f4902ca33f5274776f176ec86d5a96ff55121d608d10e1c7793

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page