This Docker Desktop error occurs when Windows cannot detect hardware virtualization support (VT-x/AMD-V) required to run containers. The fix involves enabling virtualization in your BIOS settings and ensuring Hyper-V or WSL 2 features are properly configured in Windows.
The "Hardware assisted virtualization and data execution protection must be enabled in the BIOS" error indicates that Docker Desktop cannot detect the virtualization features required to run containers on Windows. Docker Desktop requires hardware-assisted virtualization (Intel VT-x or AMD-V) and Data Execution Protection (DEP) to create and manage virtual machines that run your containers. On Windows, Docker Desktop can use either Hyper-V or WSL 2 (Windows Subsystem for Linux 2) as its backend. Both backends require hardware virtualization support at the CPU level. When this support is disabled in the BIOS/UEFI firmware, or when the required Windows features are not enabled, Docker cannot start its virtual machine and displays this error. This error is particularly common after fresh Windows installations, BIOS updates that reset settings to defaults, or when running Docker on systems that have other virtualization software (like VirtualBox or VMware) that may conflict with Hyper-V.
Before making changes, verify your current virtualization status:
Method 1: Task Manager
1. Press Ctrl + Shift + Esc to open Task Manager
2. Click the "Performance" tab
3. Select "CPU" from the left panel
4. Look for "Virtualization" at the bottom - it should show "Enabled"
Method 2: PowerShell
Open PowerShell as Administrator and run:
# Check if Hyper-V hypervisor is present
(gcim Win32_ComputerSystem).HypervisorPresent
# Check system info for virtualization
systeminfo | findstr /i "virtualization"If virtualization shows as "Disabled" or HypervisorPresent returns False, you need to enable it in BIOS.
Access your BIOS/UEFI settings and enable virtualization:
1. Restart your computer and press the BIOS key during startup (usually F2, F10, F12, Del, or Esc - varies by manufacturer)
2. Navigate to the virtualization settings (location varies by manufacturer):
- Intel systems: Look for "Intel Virtualization Technology (VT-x)" or "Intel VT" under:
- Advanced > CPU Configuration
- Security > Virtualization
- Advanced > System Agent Configuration
- AMD systems: Look for "SVM Mode" or "AMD-V" under:
- Advanced > CPU Configuration
- Advanced > Tweaker > Advanced CPU Settings
- OC (Overclocking) > CPU Features
3. Enable these settings:
- Intel Virtualization Technology (VT-x) or AMD SVM Mode: Enabled
- VT-d (Intel) or IOMMU (AMD): Enabled (if available)
- Execute Disable Bit (Intel) or NX Mode (AMD): Enabled
4. Save and exit (usually F10)
Common BIOS key combinations by manufacturer:
- Dell: F2 or F12
- HP: F10 or Esc
- Lenovo: F1 or F2
- ASUS: F2 or Del
- Acer: F2 or Del
- MSI: Del
If you're using Windows Pro, Enterprise, or Education, enable Hyper-V:
Method 1: PowerShell (Recommended)
Open PowerShell as Administrator and run:
# Enable Hyper-V with all sub-features
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# Or use DISM
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /AllMethod 2: Windows Features GUI
1. Press Win + R, type optionalfeatures and press Enter
2. Find and check "Hyper-V" (expand to see sub-features)
3. Ensure both "Hyper-V Management Tools" and "Hyper-V Platform" are checked
4. Click OK and restart when prompted
Verify Hyper-V is enabled:
(Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online).State
# Should return "Enabled"Windows 10/11 Home doesn't include Hyper-V, but Docker Desktop can use WSL 2:
Enable required features:
# Enable Virtual Machine Platform
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# Enable Windows Subsystem for Linux
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartUpdate WSL to version 2:
# Download and install the WSL 2 kernel update
wsl --update
# Set WSL 2 as default
wsl --set-default-version 2Restart your computer after enabling these features.
Verify WSL 2:
wsl --version
wsl --list --verboseSometimes the Windows hypervisor launch type gets set to "off". Fix it with these commands:
Open Command Prompt or PowerShell as Administrator:
# Enable hypervisor launch at boot
bcdedit /set hypervisorlaunchtype auto
# Restart for changes to take effect
shutdown /r /t 0Verify the setting:
bcdedit /enum | findstr hypervisorlaunchtype
# Should show: hypervisorlaunchtype AutoIf you ever need to disable it (for VirtualBox compatibility):
bcdedit /set hypervisorlaunchtype offVirtualBox, VMware, and certain other software can conflict with Hyper-V:
Option 1: Disable conflicting features
If you need Hyper-V for Docker:
# Disable Windows Sandbox (uses Hyper-V)
Disable-WindowsOptionalFeature -Online -FeatureName "Containers-DisposableClientVM"
# Disable Windows Hypervisor Platform for other apps
Disable-WindowsOptionalFeature -Online -FeatureName "HypervisorPlatform"Option 2: Use VirtualBox 6.0+ with Hyper-V
VirtualBox 6.0 and later can run alongside Hyper-V (with reduced performance):
1. Update VirtualBox to version 6.0 or later
2. VirtualBox will automatically use Hyper-V as its backend
Option 3: Remove conflicting software
If you installed Cygwin, some users report conflicts:
# Uninstall Cygwin or its conflicting componentsAfter making changes, restart Docker Desktop.
If Hyper-V appears enabled but Docker still shows the error, try a complete reset:
Step 1: Disable Hyper-V completely
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-AllStep 2: Restart your computer
Step 3: Re-enable Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -AllStep 4: Restart again
Step 5: Verify and set hypervisor launch
bcdedit /set hypervisorlaunchtype autoStep 6: Final restart and test Docker Desktop
If you're running Windows inside a virtual machine, you need nested virtualization support:
Hyper-V nested virtualization:
On the host machine, enable nested virtualization for the VM:
# Run on the HOST machine, not inside the VM
Set-VMProcessor -VMName "YourVMName" -ExposeVirtualizationExtensions $trueVMware Workstation:
1. Edit the VM settings
2. Go to Processors
3. Check "Virtualize Intel VT-x/EPT or AMD-V/RVI"
VirtualBox:
1. Open VirtualBox Settings for your VM
2. Go to System > Processor
3. Check "Enable Nested VT-x/AMD-V" (requires VirtualBox 6.1+)
Cloud VMs (Azure, AWS, GCP):
- Azure: Use Dv3, Ev3, or newer VM sizes that support nested virtualization
- AWS: Use metal instance types (e.g., c5.metal)
- GCP: Enable nested virtualization when creating the VM
Note: Docker Desktop is primarily designed to run on physical hardware. Running in a VM may have performance implications.
Understanding the Virtualization Stack:
Docker Desktop on Windows relies on a layered virtualization architecture:
1. CPU Hardware - Must support VT-x (Intel) or AMD-V
2. BIOS/UEFI - Must have virtualization features enabled
3. Windows Hypervisor - Either Hyper-V or WSL 2 backend
4. Docker Desktop - Creates and manages Linux VMs for containers
Hyper-V vs WSL 2 Backend:
- Hyper-V backend: Traditional approach, uses a full Linux VM, better isolation
- WSL 2 backend: Lighter weight, faster startup, better filesystem performance for Linux files
You can switch between backends in Docker Desktop Settings > General > "Use the WSL 2 based engine".
Windows Core Isolation Conflicts:
Windows Security's Core Isolation feature (Memory Integrity) can sometimes interfere:
1. Open Windows Security
2. Go to Device Security > Core Isolation Details
3. Try disabling "Memory Integrity" temporarily to test
Diagnostic Commands:
# Full system virtualization check
systeminfo
# Check specific features
Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -like "*Hyper*" -or $_.FeatureName -like "*Virtual*"}
# Check BCD settings
bcdedit /enum | Select-String -Pattern "hypervisor"
# Check Docker Desktop logs
Get-Content "$env:APPDATA\Docker\log\vm\*.log" -Tail 50Windows Sandbox and Hyper-V:
Windows Sandbox uses Hyper-V, so if Sandbox works, Hyper-V is functioning. Test with:
1. Enable Windows Sandbox feature
2. Launch Windows Sandbox from Start Menu
3. If it launches, Hyper-V is working
BIOS Reset Issues:
BIOS updates or CMOS battery replacement often reset virtualization settings to disabled. Always check BIOS settings after:
- BIOS/UEFI updates
- Motherboard battery replacement
- Full system resets
unable to configure the Docker daemon with file /etc/docker/daemon.json
How to fix 'unable to configure the Docker daemon with file daemon.json' in Docker
docker: Error response from daemon: OCI runtime create failed: container_linux.go: starting container process caused: exec: "/docker-entrypoint.sh": stat /docker-entrypoint.sh: no such file or directory
How to fix 'exec: entrypoint.sh: no such file or directory' in Docker
image operating system "linux" cannot be used on this platform
How to fix 'image operating system linux cannot be used on this platform' in Docker
dockerfile parse error line 5: unknown instruction: RRUN
How to fix 'unknown instruction' Dockerfile parse error in Docker
manifest unknown: manifest unknown
How to fix 'manifest unknown' in Docker