Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>WSLC ManagerNew to Visual Studio Code? Get it now.
WSLC Manager

WSLC Manager

jkudo

|
4 installs
| (0) | Free
Manage WSL containers (wslc) from VS Code — containers, images, volumes, networks, snapshots and groups.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

WSLC Manager for VS Code

Manage WSL containers (wslc.exe) directly from the VS Code sidebar: run, start, stop, exec into and inspect containers, take snapshots and duplicate them, organize them into groups, and manage images, volumes and networks.

Note: This is a community-developed extension and is not affiliated with, endorsed by, or supported by Microsoft. "Windows Subsystem for Linux" and "WSL" are trademarks of Microsoft Corporation.

Getting started

  1. Make sure your WSL includes WSL containers: run wslc version in a terminal. If the command is missing, update WSL with wsl --update.
  2. Click the WSLC icon in the Activity Bar.
  3. Use Pull Image in the Images view, or Run New Container (the + button in the Containers view) to pick an image and start a container.

Features

Click the WSLC icon in the Activity Bar. It has four views: Containers, Images, Volumes and Networks. The views update as soon as something changes — including changes made with wslc on the command line — and you can select several items at once (Ctrl/Shift+click) to start, stop, restart, kill or remove them together.

Containers view

Containers are listed with running ones first, with their status and IP address (Up 5 minutes · 172.16.10.2, Exited (0) 2 hours ago, …). Running containers have a green icon.

Expand a container to see its status, image, published ports, each network with the container's address on it (e.g. Network: mynet — 172.16.10.2/24 (gateway 172.16.10.1)), volumes and ID. For a running container it also shows a live CPU / memory / PID snapshot. Click a published TCP port to open it in the browser.

Action Description
Run New Container Pick an image (or enter a reference), then optionally set a name, port mappings, environment variables, a command and advanced options (see below). The image is pulled with progress if it is missing
Run Interactive Container Start a new container from an image and land directly in its shell in a terminal
Start / Stop / Restart / Kill / Remove Lifecycle operations, for one or several selected containers. Kill and Remove ask for confirmation
Remove Stopped Containers Prune all stopped containers
Open Shell in Container wslc exec -it into the container (bash if available, otherwise sh)
Attach to Container Attach a terminal to the container's main process
Connect VS Code to Container Open a new VS Code window attached to the container through the Dev Containers extension (see below)
Show / Follow Container Logs Show the last N lines in an output channel, or stream them in a terminal
Inspect Container Open the inspect JSON in an editor
Open Port in Browser Open a published TCP port at http://localhost:<port>
Connect to / Disconnect from Network Attach the container to another network, or detach it
Create Snapshot / Restore Snapshot Save the container's files and settings at this moment, and go back to that state later. See below
Duplicate Container Make an identical copy: the filesystem as it is now (including changes made inside the container) plus its settings — command, environment variables, mounts, networks, CPU / memory limits, working directory, user and -it. The copy gets a new name and free host ports (suggested automatically). See below
Copy Container ID Copy the ID to the clipboard

Rarely needed actions are available from the Command Palette only (WSLC Manager: …), to keep the context menu short. Mounting a Windows folder (-v) or using Duplicate Container usually covers the same needs:

Command Description
Copy to WSL Container... Copy Windows files into a running container
Copy from WSL Container... Copy a file or folder out of a container to a Windows folder
Export Container Filesystem... Save the container's filesystem (files only — no settings, no volume contents) as a tar archive. A running container is stopped for the export and started again afterwards (wslc can only export stopped containers)

Groups (optional)

Organize containers into groups — for example per project. Groups are optional: until you create one, the view is a flat list, and containers that aren't in a group stay at the top level below the groups.

  • Create Group (folder button in the view title), then Move to Group... from a container's context menu (works with several selected containers), or drag containers onto a group. Drag a container onto empty space to take it out of its group.
  • Start All in Group / Stop All in Group (inline buttons on the group) start or stop its members in one go.
  • Rename Group and Delete Group. When deleting, choose Delete Group Only (its containers just move out of the group) or Delete Group and N Containers (the containers are removed too; running ones are force-stopped, volumes are kept).
  • Groups are stored by VS Code for this extension, not in wslc, and members are remembered by container name. A duplicated container joins the original's group; a removed container leaves its group.

Creating containers

  • Checked before creation: names and host ports that are already in use are rejected while you type. Ports are checked against other running containers (named in the message), other programs on Windows, and Windows' reserved port ranges. The same check runs before Start, because a stopped container's port may have been taken in the meantime.
  • Shell images keep running: images whose command is an interactive shell (e.g. /bin/sh in alpine, /bin/bash in ubuntu) are started with -i -t automatically. Without it they would exit at once, whatever ports you publish. If the extension can't tell in advance and the container exits immediately, you can recreate it with Keep Running (-it).
  • Advanced options (last step, all optional): mount volumes or Windows folders (-v), choose a network, remove the container when it stops (--rm), limit CPUs and memory, use all GPUs, and set the working directory or user.

Snapshots and duplicating

wslc has no snapshot or commit feature, so the extension builds one:

  • Create Snapshot... saves the container's files as an image named <container>-snapshot:<name> (the name is optional; it defaults to the date and time). Image names must be lowercase, so a container name with uppercase letters, _ or . gets a short hash added (for example Web → web-72645431-snapshot) to keep its snapshots separate from similarly named containers. The settings the container had at that moment — command, environment, ports, mounts, networks, CPU / memory limits, working directory, user, -it — are recorded by the extension.
  • Expand a container to see its Snapshots. Restore Snapshot removes the container and creates it again from the snapshot with the same name, group and recorded settings. Create Container from Snapshot... makes a separate container instead (also available on snapshot images in the Images view, even after the original container is gone). Delete Snapshot removes the image; it can't be deleted while a container created from it exists.
  • Duplicate Container takes a snapshot and starts a copy from it under a new name with free host ports. The copy joins the original's group.

When the container is running, you choose how to save it:

Choice How Effect on the container
Stop and Snapshot / Duplicate (official) Stops it, wslc container export, starts it again, wslc image import — wslc can only export a stopped container Stopped for a few seconds; processes running in it restart
… Without Stopping (Unofficial) docker commit on the container engine inside the wslc session, called through wslc system session run Keeps running (paused for a moment). Not supported by wslc — it relies on wslc internals and may stop working in a future version

A stopped container is always saved the official way. A container created with Remove when stopped (--rm) would be deleted by stopping it, so it can only be saved without stopping, and Export Container Filesystem refuses it; restored and duplicated copies keep --rm. Either way, only files are saved (including software installed after the container was created). Running processes, logs output and the contents of volumes or mounted folders are not part of a snapshot; restored and duplicated containers use the same volumes and folders as the original.

Images view

Action Description
Pull Image Pull an image by reference, with progress
Run New Container / Run Interactive Container Start a container from the selected image
Tag Image Add a new reference to an image
Push Image Push an image to its registry, with progress
Log In / Log Out Sign in to a registry (the password is passed to wslc through standard input, not the command line)
Save Image to File / Load Image from File Export an image to a tar archive and load it back
Inspect Image / Copy Image Reference Open the inspect JSON, or copy repository:tag
Remove Image Remove one or several images. Images still used by containers are skipped, with the containers named; for other failures a force removal is offered
Prune Unused Images Remove dangling images only, or all images not used by any container

Images used by at least one container have a green icon.

Volumes view

Volumes keep data across container re-creation. Expand a volume to see which containers use it.

Action Description
Create Volume Create a named volume with the guest (default) or vhd driver
Remove Volume Remove one or several volumes. Volumes still used by a container are reported instead of being removed
Prune Unused Volumes Remove unused anonymous volumes, or all unused volumes
Inspect Volume / Copy Volume Name Open the inspect JSON, or copy the name

Networks view

Each network shows its driver and subnet (e.g. bridge · 172.16.10.0/24 · 1 container). Expand it to see its containers with their IP addresses; right-click a container there to disconnect it. The built-in bridge, host and none networks cannot be removed.

Action Description
Create Network Create a network with an optional subnet, and optionally make it internal (no external access)
Connect to Network Connect a container to the selected network
Remove Network / Prune Unused Networks Remove networks you created
Inspect Network Open the inspect JSON in an editor

Every action is also available from the Command Palette (WSLC Manager: …). When started from the palette, you pick the target from a list.

What "Connect VS Code" changes on your machine

Dev Containers needs to use wslc.exe instead of Docker. The first time you connect, the extension asks before it changes the global setting dev.containers.dockerPath to the wslc path. This affects every Dev Containers session, including Docker Desktop. The previous value is saved, and WSLC Manager: Restore Dev Containers Docker Path puts it back.

For older wslc builds whose inspect output has no Config.Image, the extension also writes an empty per-container attach configuration (nameConfigs/<container>.json) into the Dev Containers extension's storage, to prevent it from crashing. This is skipped when Config.Image is present.

Good to know

  • Published ports are local by default. wslc binds -p 8080:80 to 127.0.0.1, so only this PC can reach it. Use 0.0.0.0:8080:80 (or the session.defaultBindingAddress wslc setting) to publish on all addresses.
  • Containers can reach Windows at host.wslc.internal, which points to the Windows loopback address.
  • No host networking. The built-in host network is listed, but wslc rejects it; use a bridge network with published ports instead.
  • Groups and snapshot settings are stored by VS Code for this extension on this PC — nothing is written to wslc. Snapshot images themselves are regular wslc images.
  • Snapshots are not backups. They live in the same wslc session storage and don't include volume contents. Use Save Image to File to keep a copy elsewhere.

Settings

Setting Default Description
wslcManager.wslcPath "" Path to wslc.exe. Leave empty to use the one on PATH. Takes effect after reloading the window
wslcManager.refresh.useEvents true Watch wslc events to refresh the views as soon as something changes. Only runs while a view is visible
wslcManager.autoRefreshInterval 30 Periodic refresh in seconds (5–300), which also updates CPU / memory figures. Only runs while a view is visible
wslcManager.run.autoInteractive true Start containers whose command is an interactive shell with -i -t so they keep running
wslcManager.showInlineActions true Show inline buttons (shell, start, stop, run, disconnect) on tree items
wslcManager.logs.tail 500 Number of log lines shown by "Show Container Logs"

Requirements

  • Windows 11 (or Windows 10 with a recent WSL)
  • A WSL version that includes wslc.exe (tested with WSL 3.0.1). If it is missing, the views show a link to update WSL
  • VS Code 1.85 or later
  • Optional: the Dev Containers extension for "Connect VS Code to Container"

Related

WSL Manager manages WSL distributions. WSLC Manager focuses on WSL containers and can be installed alongside it.

Feedback

Please report problems and ideas on GitHub Issues.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft