KhueApps
Home/DevOps/Fix "WSL distro is stopped" when Docker Desktop won’t start

Fix "WSL distro is stopped" when Docker Desktop won’t start

Last updated: October 07, 2025

Overview

This guide resolves the Windows error message: "WSL distro is stopped" when Docker Desktop cannot start. You’ll diagnose WSL state, restart the right services, fix version/config mismatches, and safely reset Docker’s WSL distros if needed.

Applies to: Windows 10/11, Docker Desktop using WSL 2, DevOps/Docker workflows.

Quickstart (most cases)

  1. Close Docker Desktop.
  2. Open PowerShell as Administrator and run:
wsl --status
wsl --update
wsl --shutdown
Restart-Service LxssManager
Stop-Service vmcompute -Force; Start-Service vmcompute
wsl -t docker-desktop 2>$null
wsl -t docker-desktop-data 2>$null
  1. Start Docker Desktop and wait for "Docker Desktop is running".
  2. Verify:
docker version
docker run --rm hello-world

If this fails, proceed to the detailed steps below.

Minimal working example (verification)

Once fixed, this tiny example confirms Docker+WSL is healthy.

  • Create and run a simple container:
docker run --rm alpine:3.20 echo "WSL+Docker OK"
  • Or build/run a minimal image:
# Dockerfile
FROM alpine:3.20
CMD ["/bin/sh", "-c", "echo minimal build works"]
docker build -t minimal:test .
docker run --rm minimal:test

Diagnostics

Run these to understand the current state.

# List WSL distros and versions
wsl -l -v

# Check WSL kernel and default
wsl --status

# Quick health check: can docker WSL distro start?
wsl -d docker-desktop echo ok

# Service status
Get-Service LxssManager, vmcompute | Format-Table -Auto

Look for:

  • docker-desktop and docker-desktop-data present and at Version 2.
  • LxssManager and vmcompute running.
  • wsl --status shows a recent kernel and Default Version: 2.

Step-by-step fixes

  1. Ensure required Windows features are enabled
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
# Optional if Hyper-V is used elsewhere
# Enable-WindowsOptionalFeature -Online -FeatureName Hyper-V -All -NoRestart

# Ensure hypervisor is enabled (requires reboot if it was Off)
bcdedit /set hypervisorlaunchtype Auto

Reboot if any feature changed.

  1. Update and restart WSL cleanly
wsl --update
wsl --shutdown
Restart-Service LxssManager
Stop-Service vmcompute -Force; Start-Service vmcompute
  1. Make sure all distros use WSL 2
# Set default to v2
wsl --set-default-version 2

# Convert any v1 distro (including your dev distro)
wsl --set-version <YourDistroName> 2
  1. Reset Docker’s WSL distros (non-destructive first)
# Stop the Docker WSL distros, then start Docker Desktop again
wsl -t docker-desktop 2>$null
wsl -t docker-desktop-data 2>$null

If Docker Desktop still won’t start, consider a clean reset of Docker’s own WSL distros. Note: unregistering docker-desktop-data deletes Docker images/volumes. Back up first.

  • Backup containers/images you need:
# Inside running environment (if accessible)
docker save -o images.tar $(docker images --format "{{.Repository}}:{{.Tag}}")
docker volume ls
# Use docker run to export critical data from volumes if needed
  • Last resort (data-destructive):
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
# Then open Docker Desktop to let it recreate them
  1. Disk space and VHDX health

Low disk space or a bloated VHDX can prevent startup.

# Check free space in docker-desktop-data
echo df -h | wsl -d docker-desktop-data sh

# Remove unused assets (non-destructive)
docker system prune -af --volumes

Ensure the host drive containing %LocalAppData%\Docker\wsl has sufficient free space.

  1. Networking, proxies, VPNs
  • Temporarily disconnect VPNs and pause third-party firewalls.
  • Clear and reset networking:
netsh winsock reset
ipconfig /flushdns
  • If you use an HTTP proxy, configure Docker Desktop’s proxy settings or set environment variables for your distro.
  1. Time sync

Clock drift can break TLS to Docker services.

w32tm /resync
wsl --shutdown
Start-Service LxssManager
  1. Running Docker Engine directly in your WSL distro (alternative setup)

If you are not using Docker Desktop and instead run Docker Engine inside Ubuntu/Debian on WSL 2, ensure systemd or service management is configured.

  • Enable systemd in your distro:
# /etc/wsl.conf
[boot]
systemd=true

Then restart WSL and start Docker:

wsl --shutdown
wsl -d <YourDistroName>
sudo systemctl enable --now docker
sudo docker run --rm hello-world

Performance notes

  • Limit WSL 2 resource usage with a global config to avoid vmmem spikes:
# %UserProfile%\.wslconfig
[wsl2]
memory=6GB
processors=4
swap=2GB
localhostForwarding=true

Apply with:

wsl --shutdown
  • Prefer WSL 2 over WSL 1 for Docker. Mixing WSL 1 distros with Docker Desktop can be slower and less reliable.
  • Clean unused Docker data regularly to keep the docker-desktop-data VHDX small:
docker system prune -af --volumes

Common pitfalls

  • Unregistering docker-desktop-data without backups leads to loss of images/volumes.
  • Mixing Hyper-V and third-party hypervisors can conflict. Ensure only one stack controls virtualization.
  • Stale corporate proxy settings can block Docker; keep them consistent across Windows, Docker Desktop, and your distro.
  • Using WSL 1 distros with Docker Desktop can cause mount and networking issues; convert to WSL 2.
  • Editing /etc/resolv.conf manually while WSL auto-generates it can be overwritten; use /etc/wsl.conf if you must customize.

FAQ

  • Docker Desktop says "WSL distro is stopped" at startup. What’s first to try?

    • Run wsl --update, wsl --shutdown, restart LxssManager and vmcompute, then relaunch Docker Desktop.
  • Do I need Hyper-V enabled?

    • Docker Desktop on WSL 2 primarily needs VirtualMachinePlatform and the Windows hypervisor. Full Hyper-V is optional.
  • Is there data loss risk when fixing this?

    • Only if you unregister docker-desktop-data. Try non-destructive steps first and back up before resets.
  • How do I check that Docker’s WSL distros exist?

    • wsl -l -v should list docker-desktop and docker-desktop-data at Version 2.
  • Can I run Docker Engine directly inside Ubuntu instead of Docker Desktop?

    • Yes, but then manage it with systemd inside the distro and do not run Docker Desktop concurrently.

Series: Docker

DevOps