Skip to content

Install Docker Desktop on Windows 11 (Step by Step)

This is the first hands-on lab of the Docker series. By the end of it, Docker will be running on your Windows 11 computer and you'll have checked it with two commands: docker --version and docker info. If you haven't read it yet, start with Docker Introduction and Fundamentals, which explains what Docker, images and containers are. This page focuses only on the installation.

All output on this page comes from a real Windows 11 Pro machine running Docker Desktop 4.91 (Docker Engine 29.8).

What Docker Desktop installs

Docker containers for Linux need a Linux kernel. Windows doesn't have one, so Docker Desktop brings everything together for you:

  • a small Linux virtual machine running on WSL 2 (Windows Subsystem for Linux), where the Docker daemon actually runs,
  • the Docker CLI (docker.exe) that you use in PowerShell or Command Prompt,
  • Docker Compose, Buildx and other plugins,
  • a graphical dashboard to see your images, containers and volumes.

You type commands in Windows; the CLI sends them to the daemon inside the Linux VM. That's the client-server design described in Docker architecture.

Before you install: requirements

RequirementHow to check
Windows 11 64-bit (Home, Pro, Enterprise or Education)Settings > System > About
Hardware virtualization enabled in the BIOS/UEFI (Intel VT-x or AMD-V/SVM)Task Manager > Performance > CPU: "Virtualization: Enabled"
WSL 2wsl --status in PowerShell
At least 4 GB of RAM (8 GB or more is comfortable)Task Manager > Performance > Memory

Licence: Docker Desktop is free for personal use, education, open-source projects and small businesses. Larger companies need a paid Docker subscription. Check Docker's current terms if you install it on an office computer.

Step 1: Install or update WSL 2

Open PowerShell as Administrator and run:

wsl --install

If WSL is already installed, update it instead:

wsl --update

Restart Windows if you're asked to. Then check the version:

wsl --version
Output (first lines)
WSL version: 2.6.3.0
Kernel version: 6.6.87.2-1
WSLg version: 1.0.71
MSRDC version: 1.2.6353

Step 2: Download and run the installer

  1. Go to docker.com, open Products > Docker Desktop, and download Docker Desktop for Windows (AMD64). Use the ARM64 build only on an ARM laptop.
  2. Run Docker Desktop Installer.exe.
  3. On the configuration screen, keep "Use WSL 2 instead of Hyper-V (recommended)" selected.
  4. Click OK and wait for the files to be unpacked, then click Close (some versions ask you to sign out or restart).

Step 3: Start Docker Desktop

  1. Start Docker Desktop from the Start menu.
  2. Accept the service agreement. Signing in with a Docker account is optional; you can skip it.
  3. Wait until the bottom-left corner of the dashboard shows that the Engine is running. The whale icon in the system tray stops animating once Docker is ready.

Docker Desktop creates its own WSL distribution called docker-desktop. You can see it with:

wsl -l -v
Output
  NAME              STATE           VERSION
* docker-desktop    Running         2

Step 4: Verify with docker --version

Open a new PowerShell or Command Prompt window (a new one, so it picks up the updated PATH) and run:

docker --version
Output
Docker version 29.8.0, build 88096ef

This only proves the client (the CLI) is installed. It doesn't talk to the daemon. To check both sides, use docker version (without the dashes):

docker version
Output
Client:
 Version:           29.8.0
 API version:       1.56
 Go version:        go1.26.8
 Git commit:        88096ef
 Built:             Thu Sep  3 21:53:38 2026
 OS/Arch:           windows/amd64
 Context:           desktop-linux

Server: Docker Desktop 4.91.0 (239619)
 Engine:
  Version:          29.8.0
  API version:      1.56 (minimum version 1.40)
  Go version:       go1.26.8
  Git commit:       3ce5872
  Built:            Thu Sep  3 21:51:20 2026
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.3.4
  GitCommit:        db8809540e1a7a9da5d518876894933ff55692ab
 runc:
  Version:          1.4.3
  GitCommit:        v1.4.3-0-gbb14dabe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Notice the two halves:

  • The Client is windows/amd64: the docker.exe you typed into.
  • The Server (Engine) is linux/amd64: the daemon running inside the WSL 2 VM, together with containerd and runc, which actually start containers.

Step 5: Verify with docker info

docker info

The output is long. These are the lines worth reading:

Output (selected lines)
Client:
 Version:    29.8.0
 Context:    desktop-linux
 ...
Server:
 Containers: 11
  Running: 0
  ...
 Images: 16
 Server Version: 29.8.0
 Storage Driver: overlayfs
 Cgroup Driver: cgroupfs
 Kernel Version: 6.6.87.2-microsoft-standard-WSL2
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 12
 Total Memory: 3.724GiB
 Name: docker-desktop
 Docker Root Dir: /var/lib/docker
LineWhat it tells you
Context: desktop-linuxThe CLI is connected to Docker Desktop's Linux engine.
Containers / ImagesHow many containers and images exist on this machine. On a fresh install both are 0.
Kernel Version: ...-microsoft-standard-WSL2Containers use the Linux kernel of the WSL 2 VM, not Windows.
OSType: linuxYou're in Linux-container mode, which is what almost all images need.
CPUs / Total MemoryThe resources the Docker VM may use. Change them with a .wslconfig file if needed.
Docker Root DirWhere images and containers are stored, inside the VM.

If docker info prints a Server section without errors, your installation is complete.

Common installation problems and fixes

"failed to connect to the docker API" (Docker Desktop not running)

If you run a command while Docker Desktop is closed, the client can't reach the daemon. docker --version still works, because it only asks the client, but anything that needs the daemon fails:

docker ps
Output (Docker Desktop stopped)
failed to connect to the docker API at npipe:////./pipe/dockerDesktopLinuxEngine; check if the path is correct and if the daemon is running: open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.

npipe:////./pipe/dockerDesktopLinuxEngine is the Windows named pipe the client uses to talk to the daemon; it exists only while Docker Desktop is running. docker version in the same situation prints the Client section, then this error instead of the Server section.

Fix: start Docker Desktop and wait for "Engine running". You can also start it from the command line with docker desktop start.

"WSL 2 installation is incomplete" or "WSL needs updating"

Fix: run wsl --update in an Administrator PowerShell, then restart Docker Desktop.

"Virtualization support not detected"

Fix: restart the computer, open the BIOS/UEFI setup, and enable Intel Virtualization Technology (VT-x) or AMD SVM. Then check Task Manager again.

Docker uses too much memory

The WSL 2 VM can take a large share of RAM. Create %UserProfile%\.wslconfig to limit it, then run wsl --shutdown and start Docker Desktop again:

[wsl2]
memory=4GB
processors=4

Interview questions

Why does Docker Desktop on Windows need WSL 2?

Linux containers share the host's Linux kernel. Windows has no Linux kernel, so Docker Desktop runs the Docker daemon inside a lightweight Linux VM provided by WSL 2.

What's the difference between docker --version and docker version?

docker --version prints only the client version, and works even when the daemon is down. docker version asks the daemon too, so it shows both client and server details, and fails on the server part when the daemon isn't running.

How do you check whether the Docker daemon is running?

Run docker info or docker version. If the Server section appears, the daemon is running; if you get a connection error, it isn't.

Summary

  • Docker Desktop on Windows 11 runs the Docker daemon in a Linux VM on WSL 2.
  • Install or update WSL 2, run the installer with "Use WSL 2" selected, then start Docker Desktop.
  • docker --version checks the client; docker version and docker info check the daemon too.
  • Most problems come from Docker Desktop not running, an old WSL, or virtualization switched off in the BIOS.

Next lab: Run the hello-world container and see exactly how Docker downloads an image and runs a container.