WSL Native Containers Released: Run Linux Containers on Windows Without Docker Desktop

Microsoft has baked a container runtime directly into WSL — after updating, the wslc command builds and runs Linux containers natively on Windows with Docker-identical syntax, plus APIs for Windows apps to consume. This guide compiles the official GA docs with honest untested-area flags. For Windows developers wondering if Docker Desktop can finally take a back seat.

This article is compiled from Microsoft’s official GA blog post and Microsoft Learn documentation (released September 29, 2026). All commands are based on official examples. Since I haven’t tested this locally yet, behaviors such as coexistence with Docker Desktop are noted as pending verification.

Bottom line: Microsoft has baked a container runtime directly into WSL. After updating WSL, you can use wslc to build and run Linux containers natively on Windows. The commands are practically identical to Docker’s, and it even includes a set of APIs for Windows apps to consume—meaning Docker Desktop can take a back seat for many use cases.

Running Linux containers natively on Windows

The Pain Point: Bringing Out the Heavy Artillery Just to Run a Container

Previously, if you wanted to properly run Linux containers on Windows, you basically had one path: install Docker Desktop. However, it’s far from lightweight for individual users:

  • Large installer footprint, persistent background services, and memory consumption right from bootup;
  • Commercial licensing concerns on work machines, while personal hobbyists often feel it’s overkill;
  • For homelab enthusiasts self-hosting a bunch of small services, most use cases only involve running a few standalone containers where Docker Desktop’s orchestration and GUI go completely unused.

Another route was installing Docker Engine manually inside a WSL distro. It’s doable, but you have to manually spin up services on boot and deal with networking and file path quirks yourself.

Microsoft’s approach this time is straightforward: since WSL is already the foundation for running Linux on Windows, the container runtime shouldn’t be an external add-on—it should be built right in.

What Problems Does It Solve?

1. A One-Line Update Brings a Built-in Container Runtime

You can grab it simply by running wsl --update in your terminal. It provides two main entry points:

  • CLI: wslc.exe (with an added container.exe alias), designed with command syntax tailored for Docker muscle memory;
  • API: The WSL containers API, allowing native Windows applications to programmatically pull and run Linux containers. The officially highlighted use case is local AI workloads—for instance, a Windows desktop app wanting to spin up a local model service container without forcing the user to pre-install Docker Desktop. This is a massive win for local AI tool developers (our previous post on Agent Reach expanded AI agent capabilities, and such toolchains now gain a system-level container foundation).

2. GA Brings a Wave of Daily Management Commands

The General Availability release fills in many lifecycle management gaps from the preview phase:

  • wslc container restart to reboot containers, and wslc container cp to copy files between containers and the host using tar archives;
  • wslc system info to check container environment status at a glance, and wslc events to stream real-time container event logs;
  • wslc network connect/disconnect to dynamically attach or detach containers from networks, with network create supporting custom driver options;
  • Container health checks; create/run now supports --stop-timeout (accepting -1 for infinite waiting) and --mount options;
  • The default container storage path can now be redirected to a specific drive—preventing bloated image caches from maxing out your C drive.

3. Platform-Level Perks

  • File system access performance for Windows files is up to 2x faster, easing the classic cross-system file copying bottleneck;
  • A new consomme network mode improves container networking compatibility;
  • Ecosystem adoption is moving fast: VS Code Dev Containers can directly use wslc as a driver, .NET Aspire treats WSL Containers as a first-class runtime, and community projects like Lazywslc (a terminal TUI dashboard) and WSL Container Desktop (a WinUI 3 desktop client) fill the GUI gap.

Prerequisites

There is only one hard requirement (per the Microsoft Learn WSL container documentation):

  • WSL version 2.9.3 or higher. Run wsl --update to upgrade, and check your version with wsl --version;
  • Standard WSL system requirements apply: Windows 11 or Windows 10 version 21H2+, with hardware virtualization enabled in the BIOS;
  • VS Code and Windows Terminal are optional; you can manage everything purely via the command line.

There are no extra hardware gatekeepers like specific GPUs required. If you want to run GPU containers, the official API explicitly supports GPU access; for specific CLI GPU argument usage, refer to the official documentation (pending verification)—we won’t blindly assume Docker habits apply here.

Four Steps to Get Started (Following Official Docs, Unverified)

The following commands are pulled straight from the Microsoft Learn official getting-started guide. I haven’t run these on my own machine yet, but I’m laying out the path for anyone eager to experiment:

1. Update WSL and Verify Version

wsl --update
wsl --version

2. Run Your First Container

wslc run --rm -it ubuntu:latest bash -c "echo Hello world from WSL container!"

3. Spin Up Nginx and Test Port Forwarding

wslc run -d -p 8080:80 --name web nginx
curl localhost:8080

4. Check Status and Cleanup

wslc container ps
wslc image ls
wslc container stop web

Anyone familiar with Docker should find this command set completely frictionless. Here is a quick reference mapping common operations:

Operation Docker WSL Containers
Run container docker run wslc run
Build image docker build wslc build
List containers docker ps wslc container ps
List images docker images wslc image ls
Stop container docker stop wslc container stop
Restart container docker restart wslc container restart
Copy files docker cp wslc container cp
System info docker info wslc system info
Multi-container orchestration docker compose up Not yet supported

FAQ

When is Docker Compose coming?

Microsoft explicitly stated in their GA blog post that wslc compose is the most heavily requested feature and the top priority for the next phase, aiming to allow running existing compose.yaml files without changing a single line via wsl compose up. However, no timeline was provided, and it’s unavailable at GA launch.

Where do images pull from?

In official examples, running wslc run nginx works right out of the box. It uses the default Docker Hub pulling logic, meaning your existing image usage workflows remain unchanged.

Can it coexist with Docker Desktop?

Unverified through personal testing. Both rely on the WSL2 virtualization backend and should theoretically act as two independent runtimes. However, port conflicts, shared image storage, or potential interference can only be confirmed after running both side by side for a while. Don’t uninstall Docker Desktop on your primary machine right away—try running them in parallel first.

Limitations and Who Should Skip It

  • Compose projects can’t migrate over: This is currently the biggest gap. Self-hosted setups like Tencent’s open-source WeKnora covered previously, which rely on Docker Compose for one-click deployment across multiple collaborating containers, will need to stay on Docker for now.
  • No official GUI: Management is entirely command-line-driven. If you dislike terminals, you can check out community alternatives like WSL Container Desktop or Lazywslc, though their stability differs from official tooling.
  • It’s still GA v1: Features like health checks and event streams were only just added in this stable release, so expect minor edge cases while the community shakes them out. Enterprise features like Intune controls, image allowlists, and Defender integration exist, but individual users can safely ignore them.

Is It Worth Trying?

Here is the verdict based on your use case:

  • Focused on single containers, GPU inference, or temporary testing environments: Make the switch now. You ditch Docker Desktop’s background footprint and overhead while keeping your command habits intact with practically zero migration friction.
  • Heavy homelabbie relying on Docker Compose stacks: Hold off for now. Wait until wslc compose drops before considering a full migration; running a dual setup in the meantime is the safest bet.
  • Developers building local AI features for Windows apps: Take a close look at the container API. It offers a system-level integration method that Docker Desktop simply cannot match.

Final verdict: WSL containers aren’t here to kill Docker; they simply lower the barrier of running Linux containers on Windows down to a native OS-level feature. The lighter your workflow, the more effectively it can replace Docker Desktop.

Leave a Comment