Skip to content
Mike Evans-Larah By Mike Evans-Larah Software Engineer III · 4 min read
Trying Out WSL Containers: Microsoft's Built-In Alternative to Docker Desktop

TL;DR WSL Containers (wslc) is Microsoft's new built-in container runtime for Windows. Basic workflows and dev containers work well, but repos inside the WSL filesystem, Docker Compose, and .NET Aspire aren't supported yet - so our recommendation is: promising, but don't switch from Docker Desktop just yet.

Microsoft recently extended the Windows Subsystem for Linux with WSL Containers - a built-in way to create, run, and manage Linux containers on Windows. The significance? You could potentially do away with installing Docker Desktop and the Docker engine altogether, in a similar vein to alternatives like Podman.

Containers are central to how we work at endjin - dev containers for consistent development environments, emulators for local testing, multi-container stacks for running services - so a first-party, no-extra-install container runtime on Windows is an interesting prospect. In this post, I'll share my findings from trying it out, including where it works well and where it falls short today.

Getting started with wslc

WSL Containers is currently in public preview (general availability is planned for later in 2026). To get it, update to the pre-release version of WSL:

wsl --update --pre-release
The Introduction to Rx.NET (v6.1) 3rd Edition (2025) Book, by Ian Griffiths & Lee Campbell, is now available to download for FREE.

You should then have the wslc CLI tool available. If you take a look at the help output, it will feel very familiar:

SCREENSHOT: wslc --help output showing the available commands

The CLI is made to be compatible with the Docker CLI API - you've got commands for managing containers and images, building and running, managing volumes, etc. If you know Docker, you already mostly know wslc.

(N.B. "Mostly" is doing some work in that sentence - I did find at least one incompatibility, which I'll come to later.)

Running a container

Let's run a simple container, pointing at an Ubuntu image and running a bash command:

wslc run -it ubuntu bash

SCREENSHOT: Running an Ubuntu container with wslc

If you open Task Manager whilst a container is running, you can see a background virtual machine process appear, in much the same way as Docker Desktop's VM.

SCREENSHOT: Task Manager showing the WSL Containers background VM process

A single VM is used for containers managed via the CLI tool, whose memory expands and contracts as needed. Microsoft has clearly done some work to optimise this: memory is gradually released back to the Windows host when it's not in use.

The usual commands for inspecting state work as you'd expect:

wslc image list
wslc container list

So on the face of it, it all looks quite capable. The next question was: how might we actually use it?

Using wslc with dev containers

The place we use containers most is VS Code Dev Containers. The Dev Containers extension supports wslc as of the pre-release version (v0.462.0+), and switching over is straightforward: in your VS Code settings, search for "docker path" and change the Dev > Containers: Docker Path setting to wslc (users of Podman will be familiar with this trick).

SCREENSHOT: VS Code settings showing the Dev Containers Docker Path set to wslc

Then open a repo with a dev container and hit "Reopen in Container" as normal. You can see in the logs that it's calling into the wslc CLI instead of Docker, and everything connects as it would with any other dev container - post-create commands run, dev container features get installed, and you're away.

SCREENSHOT: Dev container build log showing wslc commands being executed

This all works well... if your repo lives on the Windows filesystem.

The catch: repos inside the WSL filesystem

Regular readers may remember that the way we've been running dev containers recently is to clone the repo inside the WSL filesystem, because it's dramatically faster for file-based operations than mounting across the Windows/Linux boundary.

WSL Containers does use a newer file sharing protocol - virtiofs - for mounting Windows paths into containers, and in my testing it is a little quicker than the old approach. But it's still much, much slower than having the repo natively inside the WSL filesystem.

So naturally, I experimented with cloning the repo into the WSL filesystem and running the dev container from there. This hit a whole bunch of issues. When I went to report them, I found that someone had raised the same problem the day before, so I added my findings there - and the response was that running wslc against the WSL filesystem simply isn't supported yet. There is an open ticket for running wslc from within a WSL distro, but at the time of writing there hasn't been any movement on it, which is a bit of a shame - for us, this is the single biggest blocker.

Other gaps

A few other issues came up in my testing (and in experiments by my colleague James Dawson, who has been trialling wslc more extensively):

  • Docker CLI compatibility isn't 100%. The Dev Containers extension uses the dev container CLI under the covers, which in some circumstances passes a --platform argument to build commands - and wslc doesn't support it. It's a small thing, but it shows there are edge cases where tooling that assumes the Docker CLI API will trip up.
  • .NET Aspire isn't supported. When an Aspire app model spins up containers - storage emulators, Cosmos DB emulators, and so on - it talks to Docker (or Podman). There are open tickets for wslc support in Aspire and in the underlying orchestrator, but not much movement recently.
  • No Docker Compose. We sometimes use Docker Compose from within a dev container to spin up multi-container stacks, and there's no equivalent in wslc yet. Compose support looks to be one of the most requested features, so hopefully this one comes sooner rather than later.
  • Docker-in-Docker scenarios don't work. James found that wslc can't bind mount WSL host paths, which blocks docker-in-docker style workflows. He also found rough edges around registry authentication - az acr login expects to talk to Docker, so pushing images to Azure Container Registry requires manually extracting the token and logging in with it.

Why replace Docker Desktop at all?

You might reasonably ask: if Docker Desktop works, why bother? Well, Docker Desktop requires a paid subscription for commercial use in organisations above a certain size. Whilst endjin is small enough not to need licences, many of our clients aren't - and for them, "enable a built-in Windows feature" is a much easier conversation than "procure Docker Desktop licences for the whole engineering team". A first-party Microsoft product, managed through existing enterprise tooling, tends to be an easier sell to IT departments than third-party software too.

It's also worth noting that wslc isn't just a CLI - it ships with a programmable API that lets Windows applications spin up Linux containers as part of their own logic. It will be interesting to see what comes of that; one plausible driver is AI-based workflows, where applications need sandboxed environments for running agent-generated code.

Should you switch yet?

In short: not yet. WSL Containers shows real promise - the basics work well, the memory management looks like an improvement over Docker Desktop, and the licensing story could be compelling for enterprise clients. But for our workflows, the blockers are clear:

  • No support for repos inside the WSL filesystem (the biggest one for us)
  • No .NET Aspire support
  • No Docker Compose

Our recommendation is to wait, at least until wslc can be used from within WSL itself. But given the pace at which Microsoft is iterating on WSL these days, I wouldn't bet against it catching up quickly - and when it does, it could be a genuinely useful simplification of the Windows container development story.

FAQs

What is WSL Containers (wslc)? WSL Containers is a Microsoft technology, built into the Windows Subsystem for Linux, for creating, running, and managing Linux containers natively on Windows - without needing to install Docker Desktop or a third-party container engine. It provides a CLI tool (wslc.exe) that is designed to be largely compatible with the Docker CLI.
Can WSL Containers replace Docker Desktop? Not yet for most development teams. Basic container workflows and dev containers running from the Windows filesystem work well, but running wslc from within a WSL distro, Docker Compose, and .NET Aspire are not yet supported. It is worth watching, particularly for organisations that would otherwise need paid Docker Desktop licences.
Does wslc work with VS Code Dev Containers? Yes - with the pre-release version of the Dev Containers extension (v0.462.0 or later), you can set the 'Dev > Containers: Docker Path' setting to 'wslc' and dev containers will build and run using WSL Containers instead of Docker. However, repositories cloned inside the WSL filesystem are not yet supported.

Mike Evans-Larah

Software Engineer III

Mike Evans-Larah

Mike is a Software Engineer at endjin with over a decade of experience in solving business problems with technology. He has worked on a wide range of projects for clients across industries such as financial services, recruitment, and retail, with a strong focus on Azure technologies.