WSL Container Desktop 2.0.1: WinUI 3 GUI for wslc, Compose Import, and Trade-offs
This article reviews WSL Container Desktop 2.0.1, a WinUI 3 desktop application that provides a graphical interface for Microsoft's wslc CLI, covering its features like Files/Changes/Endpoints views, Compose stack management via desktop-as-daemon, k3s integration, installation via two PowerShell commands, and three key caveats including self-signed certificate trust and Compose restart dependency on the running app.
01 The Missing Piece for wslc
On September 29, WSL Containers reached GA with WSL 3.0.1, introducing the wslc.exe command (alias container.exe) that mirrors Docker CLI verbs: run, pull, push, logs, exec, stats, events. While functional, the CLI requires jumping between subcommands and remembering port mappings.
WSL Container Desktop fills this gap. It is a native WinUI 3 application (started July 10, version 2.0.1 released October 1, 151 stars, GPL-3.0) that wraps the engine, similar to Docker Desktop or Podman Desktop, making containers visible and clickable.
02 Relationship with Microsoft
The repository README states it is an independent community project, not a Microsoft product, with no affiliation, endorsement, or support from Microsoft. However, Microsoft's September 29 GA announcement includes a "Partner and community integrations" section listing WSL Container Desktop as a "WinUI 3 desktop app for managing WSL containers, Kubernetes (k3s), and container registries." The author, Michael Hacker, is a Microsoft employee, but the project lives under his personal account. The accurate characterization: Microsoft's announcement acknowledges its ecosystem role, but it carries no official support channel or SLA; it remains a personally maintained open-source project.
03 Feature Walkthrough
Three Views Beyond the Command Line
Basic operations (run, start, stop, restart, kill, remove, prune, log streaming, exec terminal, inspect JSON, real-time stats) are all present. GA additions like --mount, --stop-timeout, --gpus all have corresponding inputs in the Run dialog. The real time-savers are three dedicated views:
Files : Browse the container filesystem, drag-and-drop upload/download. Uses GA's wslc container cp, so files can be transferred to stopped containers without exec.
Changes : Equivalent to docker diff, listing added, modified, and deleted files relative to the image.
Endpoints : Aggregates all published ports of running containers into a clickable localhost:port table, opening the browser directly.
Compose via Desktop-as-Daemon
wslc3.0.1 lacks a compose command and restart policies; Microsoft's GA announcement marks wslc compose as a future priority. WSL Container Desktop implements its own Compose engine: it imports docker-compose.yml, resolves service dependencies, creates networks, starts containers in order, and monitors them. This "desktop-as-daemon" mode gives practical benefits: up/down/restart apply to the whole stack, dependency ordering, health-check gating, and selective rebuild on changes. Multi-service templates (e.g., WordPress + MySQL) receive a compatibility review before deployment, showing which keys take effect and which are ignored. The trade-off is explicit: orchestration logic lives in the app; close the app and the daemon stops. Restart policies, health probes, and auto-heal only function while the application runs. The README warns against using it for unattended recovery; it targets local multi-container development.
Restart policies, health probes, and auto-heal are implemented by the application and only take effect while the application is running. The README explicitly states not to rely on it for unattended recovery; it is suited for local development and debugging of multi-container projects.
Other Notable Features
Template Library : One-click launch for databases (PostgreSQL, MySQL, MongoDB, Redis, SQL Server 2025), web tools (Nginx, Adminer, MinIO, RabbitMQ), Azure emulators (Azurite, Cosmos DB, Service Bus, Event Hubs), and language sandboxes (Python, Node.js, .NET, Java, Go, Rust). Re-deploying a template auto-assigns free names and ports.
Kubernetes Page : Installs single-node k3s inside WSL with UI for nodes, deployments, pods, services, and Apply YAML. This is the only feature requiring a WSL distribution; containers run in their own VM.
WSL Engine Page : Manages the underlying session (restart, shutdown, update check) and container storage location (default %LOCALAPPDATA%\wslc\sessions, movable to another drive).
AI Diagnostics (opt-in): Connects to GitHub Copilot, Azure OpenAI, any OpenAI-compatible endpoint, or local Ollama. Keys stored in Windows Credential Manager. Reads logs and inspect output to suggest fixes (text only, copy-paste execution); container deletion capability disabled by default.
Registry Management : One-click Azure Container Registry login via Azure identity (no admin key). Respects enterprise policies: Intune or Group Policy can disable WSL Containers or enforce registry allow-lists; the app complies and explains why.
04 Installation in Two Commands
Prerequisite: WSL 3.0.1 or higher (2.9.x preview no longer supported).
wsl --version # confirm 3.0.1 or higher
wsl --update # if lower, update; now on stable channel, no --pre-release neededDownload two files from GitHub Releases into the same directory: WSLContainerDesktop_2.0.1_x64.msix (110 MB, self-contained, includes .NET 10 and Windows App SDK) WSLContainerDesktop-Signing.cer Open PowerShell as Administrator, cd to the directory, run:
Import-Certificate -FilePath .\WSLContainerDesktop-Signing.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople
Add-AppxPackage -Path .\WSLContainerDesktop_2.0.1_x64.msix -ForceUpdateFromAnyVersionThe first command trusts the developer's self-signed certificate ( CN=Michael Hacker); the second installs the package. Launch from Start Menu. The app checks GitHub for updates on each start and offers one-click update. Version 2.0.1 (October 1) fixed Kubernetes issues and display bugs in Chinese, Japanese, Russian, French locales (kernel version showing "Unknown") and Traditional Chinese (WSL version unreadable, breaking update checks).
An Install.ps1 script exists but may be blocked by Windows' RemoteSigned execution policy for downloaded scripts. Workaround: powershell -ExecutionPolicy Bypass -File .\Install.ps1 or Unblock-File -Path .\* then run. The two-command method is interactive, bypasses script signing policy, and is officially recommended.
05 First Run: Nginx in Three Minutes
Dashboard shows engine status, container/image/volume counts, and a live performance table (CPU, memory, network I/O, block I/O) for running containers.
Go to Images → Pull image → enter nginx:alpine.
Return to Containers → Run a container → select the pulled image → map a host port → Run.
Open Endpoints, click the localhost:port link → browser shows nginx welcome page.
Drill into the container: Logs (streaming, search, error highlight), Stats (real-time charts), Files (drag index.html out, edit, drag back).
Templates, k3s, and AI diagnostics are accessible from the left sidebar.
06 Three Trade-offs
Installing adds a self-signed certificate to the system. Standard for sideloaded apps, but you should verify the .cer (right-click → open) confirms publisher CN=Michael Hacker before importing.
Compose restart policies and health checks depend on the application staying running. Fine for ad-hoc development stacks; wrong choice if you need services to survive after you close the app.
The project does not yet use the official Microsoft.WSL.Containers .NET NuGet package (released alongside GA) for programmatic container control. It still shells out to wslc.exe. The README notes migration will be evaluated once the package's dependency age meets project policy. This signals an early-stage project.
Together these points mean: a tool that noticeably improves daily efficiency, but not infrastructure with an SLA.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Ubuntu
Focused on Ubuntu/Linux tech sharing, offering the latest news, practical tools, beginner tutorials, and problem solutions. Connecting open-source enthusiasts to build a Linux learning community. Join our QQ group or channel for discussion!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
