Docker Desktop is the easiest way to run containers on a Windows machine, but the install trips people up in two predictable places: virtualization that isn’t switched on in firmware, and confusion over which backend to use. Get those two right and the rest is a regular installer.
This guide covers the whole path on Windows 10 and Windows 11. You’ll enable hardware virtualization, install WSL2, run the Docker Desktop installer, pick the right backend, and confirm everything works with a test container. The last section walks through the errors that show up most often so you can clear them without guessing.
The short version: on current Windows, the WSL2 backend is what you want. It’s faster than the old Hyper-V backend, works on Home editions, and is the default Docker has settled on.
Check the requirements first
Docker Desktop has a few hard requirements. Confirm them before downloading anything — it saves a failed install.
- 64-bit Windows 10 (build 19041 / version 2004 or later) or Windows 11. Home, Pro, and Enterprise all work with the WSL2 backend.
- Hardware virtualization enabled in BIOS/UEFI (Intel VT-x or AMD-V).
- WSL2 installed, with a Linux kernel update applied. The installer can set most of this up, but doing it first avoids errors.
- At least 4 GB of RAM. More is better once you run multiple containers.
Step 1: Enable virtualization in firmware
This is the single most common blocker. Docker can’t run without hardware virtualization, and on many machines it’s switched off by default.
First, check whether it’s already on. Open Task Manager (Ctrl+Shift+Esc), go to the Performance tab, select CPU, and look at the Virtualization line:
Virtualization: Enabled
If it says Enabled, skip to the next step. If it says Disabled, you need to turn it on in firmware:
- Reboot and enter BIOS/UEFI setup — usually Del, F2, F10, or F12 during startup (the key depends on your motherboard or laptop maker).
- Find the virtualization setting. Intel calls it Intel Virtualization Technology or VT-x; AMD calls it SVM Mode or AMD-V. It’s often under a CPU, Advanced, or Security menu.
- Set it to Enabled, save, and exit.
After the reboot, re-check Task Manager to confirm it now reads Enabled.
Step 2: Install WSL2
On a recent Windows build, a single command installs WSL2, the Linux kernel, and a default Ubuntu distribution. Open PowerShell as Administrator and run:
wsl --install
Reboot when it asks. After the restart, confirm WSL is on version 2:
wsl --status
You want to see WSL2 as the default version. If you have an older WSL1 setup from before, set the default explicitly:
wsl --set-default-version 2
Step 3: Download and run the installer
Get Docker Desktop for Windows from Docker’s official site (docker.com). Run the downloaded Docker Desktop Installer.exe.
During setup you’ll see a checkbox along the lines of Use WSL 2 instead of Hyper-V (recommended). Leave it checked. The installer copies files, sets up the WSL2 integration, and asks you to close and reopen — or sometimes log out and back in — when it finishes.
Launch Docker Desktop from the Start menu. The first start takes a minute while it provisions its WSL2 components. When the whale icon in the system tray stops animating and the dashboard says Engine running, it’s ready.
WSL2 backend vs Hyper-V backend
| Supported editions | WSL2: Home, Pro, Enterprise. Hyper-V: Pro and Enterprise only. |
|---|---|
| Memory use | WSL2: dynamic, shares with Windows. Hyper-V: fixed allocation reserved upfront. |
| Startup speed | WSL2: faster. Hyper-V: slower to boot the VM. |
| File sharing | WSL2: fast access to files inside the WSL distro. Hyper-V: shared drives, slower. |
| Recommended? | WSL2: yes, the default. Hyper-V: only when WSL2 can't be used. |
Step 4: Verify the install
Don’t trust the green light alone — run a container. Open a terminal (PowerShell, Windows Terminal, or a WSL shell) and check the versions:
docker version
docker compose version
docker version should print both a Client and a Server section. If you only see the client, the engine isn’t reachable yet — give Docker Desktop a moment or restart it. docker compose version should report v2.x.x, since Compose ships inside Docker Desktop and you call it as docker compose (with a space).
Now the classic smoke test:
docker run hello-world
Docker pulls the tiny hello-world image, runs it, and prints a “Hello from Docker!” message. That one command proves the engine is running, image pulls work, and the runtime can start a container.
To see a real service, run Nginx and map it to a host port:
docker run -d --name web -p 8080:80 nginx
Open http://localhost:8080 in a browser and you’ll get the Nginx welcome page. Clean up when you’re done:
docker stop web
docker rm web
Post-install verification
- Task Manager shows Virtualization: Enabled
- wsl --status reports WSL 2 as the default version
- docker version shows both Client and Server
- docker compose version reports v2.x.x
- docker run hello-world prints the success message
- docker run nginx is reachable at http://localhost:8080
Common install errors and how to clear them
A handful of failures come up over and over on Windows. Here’s what each one means.
“Docker Desktop requires a newer WSL kernel version” / “WSL 2 installation is incomplete” — The Linux kernel component is missing or outdated. Run wsl --update in an elevated PowerShell, then restart Docker Desktop.
“Hardware assisted virtualization and data execution protection must be enabled in the BIOS” — VT-x or AMD-V is off in firmware. Go back to Step 1, enable it in BIOS/UEFI, save, and reboot. Confirm in Task Manager before retrying.
“Docker Desktop - WSL distro terminated abruptly” or the engine won’t start — Often a stale WSL state. Quit Docker Desktop, then run wsl --shutdown in PowerShell, wait a few seconds, and start Docker Desktop again.
A VirtualBox or VMware VM stops working after installing Docker — Both the WSL2 and Hyper-V backends use the Windows hypervisor, which older VM software couldn’t share. Update VirtualBox or VMware Workstation to a version that supports the Windows Hypervisor Platform. This overlaps with the Hyper-V conflicts behind the VirtualBox VT-x not available error.
A port conflict when starting a container — Something already holds the host port you’re publishing. That has its own walkthrough: how to fix “port is already allocated”.
Where your files and data live
One thing that surprises people coming from Linux: with the WSL2 backend, Docker’s images, containers, and volumes don’t sit in a normal Windows folder. They live inside the WSL2 virtual disk, managed by Docker Desktop. You won’t find them in File Explorer, and you shouldn’t try to edit them there.
For best performance, keep project files you bind-mount inside the WSL filesystem (under your Linux home directory) rather than on the Windows C: drive. Mounting from /mnt/c/... works but is noticeably slower because it crosses the Windows–Linux boundary. If you’re unclear on the difference between bind mounts and Docker-managed storage, the bind mount vs named volume guide lays it out.
Wrapping up
Installing Docker Desktop on Windows comes down to three things: turn on hardware virtualization in firmware, install WSL2, then run the installer with the WSL2 backend selected. The WSL2 backend is the right default on both Windows 10 and Windows 11, including Home editions — it’s faster, lighter, and the one Docker maintains going forward. Reserve the Hyper-V backend for the rare case where WSL2 genuinely can’t run.
With the engine running, the obvious next step is multi-container apps. Start with the Docker Compose beginner guide, and browse the rest of the Docker & Containers guides when you want to go further.