How to Install Docker on Windows Without WSL
Install Docker on Windows without WSL using Hyper-V, Windows containers, Docker Desktop all-users mode, and server-safe alternatives.
If you want to install Docker on Windows without WSL, you are probably trying to run Windows containers, avoid WSL2 issues, or use the Hyper-V backend instead of the WSL2 backend. This guide explains the clean production-safe path: when no-WSL Docker makes sense, what Windows editions support it, how to enable Hyper-V and Containers, and what to use instead on Windows Server.
The short answer: you can install Docker on Windows without WSL by using Docker Desktop in all-users installation mode with the Hyper-V backend and Windows containers enabled. This is mainly for Windows 10/11 Pro, Enterprise, or Education machines that need Windows containers. If you are using Windows Server, do not use Docker Desktop as your production plan; install a server-supported container runtime instead. For Linux containers on a Windows developer machine, WSL2 is still usually the better backend.
Why This Problem Exists
Docker on Windows is confusing because “Docker on Windows” can mean three different things: Linux containers through WSL2, Windows containers through Hyper-V, or container runtime installation on Windows Server. Those are not the same setup.
Docker Desktop’s current Windows installation documentation says Docker Desktop supports both WSL2 and Hyper-V backends, but the installation mode matters. Docker also documents that per-user installation supports only the WSL2 backend, while all-users installation can support Hyper-V and Windows containers. (Docker Documentation)
That one detail causes many failed installs. A user installs Docker Desktop normally, tries to run Windows containers, and the option is missing or broken. The reason is often that Docker Desktop was installed in a mode that does not support Windows containers.
The second source of confusion is container type. Linux containers need a Linux kernel. On modern Windows desktops, Docker Desktop usually handles this through WSL2. Microsoft explains that WSL2 runs a full Linux kernel on Windows, which is why it works well for Linux-based Docker development. Docker also recommends WSL2 for Linux workspaces because it improves file sharing, cold-start time, and dynamic resource allocation. (Docker Documentation)
Windows containers are different. They use the Windows kernel and Windows base images such as nanoserver, servercore, and Windows Server container images. Microsoft documents two Windows container isolation modes: process isolation and Hyper-V isolation. Hyper-V isolation runs the container inside a lightweight virtual machine, and Docker can run it with --isolation=hyperv. (Microsoft Learn)
The third issue is Windows edition support. Hyper-V is not available on every Windows edition in the same way. Docker’s Windows requirements list Windows 11 Pro, Enterprise, or Education for the Hyper-V backend and Windows containers path. Windows Home users are usually pushed toward WSL2 because Client Hyper-V is not available the same way on Home editions. (Docker Documentation)
This is why the correct answer depends on your goal. If you want Linux containers on Windows, use WSL2. If you want Windows containers, use Hyper-V and the Containers feature. If you want production containers on Windows Server, use a server-supported runtime instead of treating Docker Desktop like a server product.
The Solution — The Hitori No-WSL Docker Path
The safest way to install Docker on Windows without WSL is to decide first whether you need Windows containers or Linux containers. If you need Windows containers, use Docker Desktop all-users installation mode, enable Hyper-V and Containers, then switch Docker Desktop to Windows containers. If you need Linux containers but do not want WSL, run Docker Engine inside a dedicated Linux VM on Hyper-V instead.
Step 1: Confirm whether you actually need no-WSL Docker
No-WSL Docker is useful when your workload depends on Windows containers. Examples include .NET Framework apps, IIS-based containers, legacy Windows services, Windows Server Core images, or testing Windows container behaviour before deployment to Windows Server.
No-WSL Docker is usually not the best choice for Node.js, Python, PHP, Laravel, Next.js, PostgreSQL, Redis, MongoDB, Nginx, or most Linux-based web stacks. Those ecosystems generally run better as Linux containers, and on Windows developer machines that normally means WSL2.
Use this rule:
| Your goal | Best Windows Docker path |
|---|---|
| Run Linux containers for web development | Docker Desktop with WSL2 |
| Run Windows containers locally | Docker Desktop with Hyper-V and Windows containers |
| Run production containers on Windows Server | Windows Server container runtime |
| Avoid Docker Desktop entirely for Linux containers | Linux VM on Hyper-V with Docker Engine |
| Avoid WSL because it keeps breaking | Repair WSL first, or use a Linux VM if your company allows it |
For a related troubleshooting guide, you can also internally link to your existing article: Docker Desktop Stuck on Starting in Windows. That blog is useful for readers who came here because WSL2 or Docker Desktop keeps hanging.
Step 2: Check Windows edition and virtualization
Before installing anything, check your Windows edition. Open PowerShell and run:
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
You want Windows 10/11 Pro, Enterprise, or Education for the normal Hyper-V backend path.
Then check virtualization:
systeminfo
Look for Hyper-V requirements near the bottom. Hardware virtualization must be enabled in BIOS or UEFI.
You can also check Task Manager. Open Task Manager, go to Performance, select CPU, and confirm that “Virtualization” says Enabled.
If it says Disabled, reboot into BIOS/UEFI and enable Intel VT-x, Intel Virtualization Technology, AMD-V, or SVM Mode depending on your hardware.
Step 3: Enable Hyper-V and Containers
Open PowerShell as Administrator and enable the required Windows features:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
dism.exe /online /enable-feature /featurename:Containers /all /norestart
Restart the computer:
Restart-Computer
After restart, verify the features:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Get-WindowsOptionalFeature -Online -FeatureName Containers
Both should show:
State : Enabled
If Hyper-V fails to enable, the usual causes are unsupported Windows edition, disabled BIOS virtualization, or another virtualization platform conflicting with Hyper-V.
Step 4: Install Docker Desktop in the correct mode
Download Docker Desktop from Docker’s official Windows installer page. Docker’s documentation notes that Windows containers require all-users installation mode and are not available when Docker Desktop is installed per-user. (Docker Documentation)
For a clean install, run the installer as Administrator. During installation, choose the option that supports all users if prompted.
If you are installing silently or for a managed device, you can use an installer command depending on the current Docker Desktop installer options. Always verify against Docker’s latest installation documentation before scripting this across a company fleet. (Docker Documentation)
After installation, restart Windows.
Then open Docker Desktop as Administrator.
Step 5: Switch Docker Desktop to Windows containers
Once Docker Desktop is running, right-click the Docker whale icon in the system tray and select:
Switch to Windows containers
If the option is missing, check these three things first:
| Problem | Likely cause |
|---|---|
| “Switch to Windows containers” is missing | Docker Desktop installed per-user |
| Docker refuses Windows container mode | Containers feature not enabled |
| Docker starts but Windows images fail | Host/image Windows version mismatch |
| Hyper-V errors appear | Hyper-V not enabled or virtualization disabled |
| Docker only shows WSL2 backend | Wrong install mode or Windows edition issue |
Now test Windows containers:
docker version
docker info
Check the OS type:
docker info --format '{{.OSType}}'
It should return:
windows
Now run a Windows container:
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c echo Hello from Windows container
If that works, Docker is running without WSL for Windows containers.
Step 6: Test Hyper-V isolation
Hyper-V isolation is useful when the container needs stronger isolation or when Windows version compatibility requires it. Microsoft documents the Docker syntax for Hyper-V isolation as --isolation=hyperv. (Microsoft Learn)
Run:
docker run -it --rm --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2022 cmd
Inside the container, test:
hostname
ver
exit
If this works, you have confirmed that Docker can run Windows containers with Hyper-V isolation.
Step 7: Understand image compatibility
Windows container images are tied more closely to Windows versions than Linux images. If you pull a Windows container image that does not match your host version, you may see errors such as:
The container operating system does not match the host operating system.
or:
no matching manifest for windows/amd64
The fix is to choose the correct image tag for your host. For example:
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
docker pull mcr.microsoft.com/windows/servercore:ltsc2022
If you are on newer Windows builds, choose a compatible Windows image tag. For more background on container version behaviour, your existing blog cluster can internally link to Installation of Docker Windows Containers on Hyper-V (No WSL), which already targets this specific no-WSL Windows containers topic.
Step 8: Use a Linux VM if you need Linux containers without WSL
If your real goal is “I want Linux containers but I don’t want WSL,” the clean alternative is not Windows containers. It is a Linux VM on Hyper-V with Docker Engine installed inside it.
The architecture looks like this:
Windows Host
↓
Hyper-V
↓
Ubuntu Server VM
↓
Docker Engine
↓
Linux containers
This avoids WSL completely while still giving you a real Linux Docker environment. It is often a better fit for developers who want Linux containers but have repeated WSL corruption, corporate WSL restrictions, or a preference for full VM isolation.
The trade-off is that you manage the Linux VM yourself. You need SSH access, disk allocation, networking, package updates, Docker Engine installation, and file sharing strategy.
For many DevOps teams, this is acceptable. It also mirrors production more closely if the final app runs on a Linux VPS or AWS EC2 instance. You can internally link readers to Deploy a Full Stack App on AWS EC2 if they want the production deployment side after local Docker setup.
Docker Desktop, Hyper-V, Windows Server, and Linux VM Compared
The right no-WSL Docker option depends on the workload. Use Windows containers for Windows workloads. Use Linux VM Docker Engine for Linux workloads. Use Windows Server container runtime for server production.
| Option | Uses WSL? | Best for | Production use | Main limitation |
|---|---|---|---|---|
| Docker Desktop with WSL2 | Yes | Linux container development | Development only | Depends on WSL2 |
| Docker Desktop with Hyper-V Windows containers | No | Windows container development | Development/testing | Requires supported Windows edition and all-users install |
| Docker Engine inside Linux VM on Hyper-V | No | Linux containers without WSL | Good for self-managed servers/labs | You manage the VM |
| Windows Server container runtime | No | Windows Server production containers | Yes | Server-focused setup, not Docker Desktop |
| Remote Docker host | No local backend | Teams using shared Linux Docker server | Depends on host | Needs network and access control |
This table is important because many developers say “Docker without WSL” when they really mean “Docker Desktop is broken.” If the workload is Linux-based, fixing WSL or using a Linux VM is normally better than forcing Windows containers.
Common Mistakes and How to Avoid Them
The most common mistake is installing Docker Desktop per-user and then expecting Windows containers to work. Docker documents that Windows containers are available only in all-users installation mode. If the Windows containers option is missing, reinstall Docker Desktop correctly before spending hours changing random settings. (Docker Documentation)
The second mistake is thinking Windows containers are a replacement for Linux containers. They are not. A Windows container cannot run a normal Linux-based Node.js, Nginx, Redis, PostgreSQL, or MongoDB image unless that image has a Windows-compatible build. If you see no matching manifest for windows/amd64, you are probably trying to pull a Linux-only image while Docker is in Windows container mode.
The third mistake is skipping Hyper-V and Containers features. Docker Desktop may install successfully, but Windows container mode will fail if the required Windows features are not enabled. Always verify with Get-WindowsOptionalFeature.
The fourth mistake is using Windows containers on Windows Home. Docker’s supported Hyper-V backend path is aimed at Windows Pro, Enterprise, and Education editions. Windows Home users are normally better served by WSL2 or by using a separate Linux VM depending on their goal. (Docker Documentation)
The fifth mistake is using Docker Desktop on Windows Server as if it were a production runtime. Docker Desktop is a developer product. For Windows Server production, use a supported Windows container runtime approach instead of installing a desktop-focused tool on a server.
Real-World Example
A common case looks like this: a developer has Windows 11 Pro, Docker Desktop keeps pushing them toward WSL2, but the project requires testing Windows Server Core containers for a .NET Framework application. They install Docker Desktop normally, but “Switch to Windows containers” is missing.
The fix is not to repair WSL. The fix is to install Docker Desktop in all-users mode, enable Hyper-V and Containers, restart, then switch to Windows containers. After that, docker info --format '{{.OSType}}' should return windows.
A second case is a Node.js developer who wants Docker without WSL because WSL keeps getting stuck. That person should not switch to Windows containers unless their images support Windows. The better solution is either to fix Docker Desktop WSL issues using Docker Desktop Stuck on Starting in Windows or create an Ubuntu VM on Hyper-V and install Docker Engine inside it.
At Hitori Tech, we usually split Windows Docker issues into three categories: Linux development problems, Windows container problems, and server runtime problems. That saves time because each category has a different fix path. For teams managing repeat installs, N8N automation can also help collect endpoint data such as Windows edition, Hyper-V state, Docker version, WSL state, and error logs before support engineers touch the machine.
Troubleshooting Checklist
Use this checklist when Docker without WSL does not work.
| Check | Command or action | Expected result |
|---|---|---|
| Windows edition | Get-ComputerInfo | Pro, Enterprise, or Education |
| Virtualization | Task Manager > CPU | Virtualization enabled |
| Hyper-V feature | Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All | Enabled |
| Containers feature | Get-WindowsOptionalFeature -Online -FeatureName Containers | Enabled |
| Docker mode | Docker tray menu | Windows containers available |
| Docker OS type | docker info --format '{{.OSType}}' | windows |
| Test image | docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c echo ok | Container runs |
| Hyper-V isolation | docker run --rm --isolation=hyperv ... | Container runs |
If one of these fails, fix that specific layer before reinstalling everything.
Frequently Asked Questions
What is the best way to install Docker on Windows without WSL?
The best way to install Docker on Windows without WSL is to use Docker Desktop in all-users installation mode, enable Hyper-V and Containers, then switch Docker Desktop to Windows containers. This works best on Windows 10/11 Pro, Enterprise, or Education. If you need Linux containers without WSL, use a Linux VM on Hyper-V and install Docker Engine inside that VM.
How do I enable Hyper-V for Docker on Windows?
You enable Hyper-V for Docker by turning on the Microsoft-Hyper-V-All and Containers Windows features, then restarting the computer. In PowerShell as Administrator, run dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart and dism.exe /online /enable-feature /featurename:Containers /all /norestart. After restart, verify both features with Get-WindowsOptionalFeature.
Why is the Windows containers option missing in Docker Desktop?
The Windows containers option is usually missing because Docker Desktop was installed in per-user mode, the Containers feature is disabled, Hyper-V is not enabled, or the Windows edition does not support the required backend. Docker documents that Windows containers are supported only in all-users installation mode, so reinstalling Docker Desktop correctly often fixes the missing option.
Can I run Linux containers on Windows without WSL?
You can run Linux containers on Windows without WSL by creating a Linux virtual machine in Hyper-V and installing Docker Engine inside that VM. Docker Desktop’s normal Linux container path on Windows uses WSL2, so avoiding WSL means you need another Linux environment. A dedicated Ubuntu Server VM is the cleanest no-WSL alternative.
Is Docker Desktop supported on Windows Server?
Docker Desktop is not the right production plan for Windows Server. Windows Server container workloads should use a server-supported container runtime and Windows container features rather than Docker Desktop. Docker Desktop is mainly designed for developer workstations, while Windows Server needs a production container runtime approach.
Should I use Hyper-V or WSL2 for Docker on Windows?
Use WSL2 if your main workload is Linux containers for web development, Node.js, Python, PHP, databases, and common open-source stacks. Use Hyper-V with Windows containers if your workload depends on Windows base images, IIS, .NET Framework, Windows Server Core, or Hyper-V isolation. Use a Linux VM on Hyper-V if you need Linux containers but cannot use WSL2.
Installing Docker on Windows without WSL is absolutely possible, but only when you choose the right path for the workload. Use Hyper-V and Windows containers for Windows workloads, use a Linux VM for Linux containers without WSL, and use a server-supported runtime for Windows Server production. If you want this standardized across developer machines, CI/CD, or client infrastructure, explore Hitori Tech’s services or contact us for a clean DevOps setup.