Summary
On an Azure Windows Server VM, starting Docker Desktop with the WSL2 backend immediately makes the VM unreachable over RDP. Azure often continues to show PowerState = Running, but TCP 3389 stops responding. The guest appears hung or crash-reboots. This still reproduces after a full OS disk reimage.
Environment
Service: Azure Virtual Machines
Region: Central US
VM size: Standard_E4as_v7
OS: Windows Server (clean image after OS disk reimage)
Access: RDP (public IP, port 3389); also Azure CLI az vm run-command
Interactive user: genesis
Workload: Docker Desktop (WSL2 backend) for a local Docker Compose stack
Steps to reproduce
Create / use a Windows Server VM that supports nested virtualization.
Enable Hyper-V, Virtual Machine Platform, Hypervisor Platform, and WSL. Confirm hypervisor launch type is Auto.
Install Docker Desktop configured for the WSL2 backend (do not use --always-run-service).
Sign in over RDP as an interactive user (genesis).
Start Docker Desktop.
Expected result
Docker Desktop starts, the WSL2 engine comes up, and RDP remains available.
Actual result
Within moments of starting Docker Desktop:
RDP disconnects
Port 3389 stops responding
Azure may still report PowerState = Running
Azure may also show a guest OS crash reboot message similar to: “The Virtual Machine is undergoing a reboot due to a guest OS crash. The local data remains unaffected during this process.”
Recovery requires a same-size VM restart (or start if the VM fully stopped/deallocated). This is not caused by DevTest Lab / auto-shutdown deallocate.
Confirmed auto-shutdown / scheduled deallocate is not targeting this VM.
On the previous OS: limited WSL via %UserProfile%\.wslconfig (memory=4GB, processors=2, swap=2GB).
Fully uninstalled Docker Desktop and cleaned leftover Docker paths; disabled/re-enabled WSL and Virtual Machine Platform with reboots.
Clean-reinstalled Docker Desktop without starting it as Local System / from Run Command (SYSTEM start fails for WSL2 with WSL_E_LOCAL_SYSTEM_NOT_SUPPORTED).
Reimaged the OS disk to a clean Windows install; re-enabled Hyper-V / VirtualMachinePlatform / HypervisorPlatform / WSL; reinstalled Docker Desktop.
Starting Docker Desktop as genesis on the reimaged OS still reproduces the hang/crash.
Additional evidence
Pre-reimage Event Log included Hyper-V-related bugchecks such as 0x00020001, plus Kernel-Power / unexpected shutdown events around Docker Desktop / WSL bring-up.
Azure metrics sometimes showed high CPU and availability dropping while PowerState remained Running.
Long az vm run-command scripts during Docker bring-up previously worsened RDP hangs; remote scripts are kept short.
Question
Why does starting Docker Desktop (WSL2 backend) consistently hang or crash-reboot the Windows guest / nested Hyper-V stack on this Azure VM while the control plane still reports Running—even after a clean OS reimage?
Looking for a durable fix or known issue guidance (nested virtualization, Hyper-V, WSL, Docker Desktop, or this VM size/series). Workarounds that actually stick are welcome (for example Hyper-V backend instead of WSL2, alternate install/config).
Summary
On an Azure Windows Server VM, starting Docker Desktop with the WSL2 backend immediately makes the VM unreachable over RDP. Azure often continues to show PowerState = Running, but TCP 3389 stops responding. The guest appears hung or crash-reboots. This still reproduces after a full OS disk reimage.
Environment
Service: Azure Virtual Machines
Region: Central US
VM size: Standard_E4as_v7
OS: Windows Server (clean image after OS disk reimage)
Access: RDP (public IP, port 3389); also Azure CLI az vm run-command
Interactive user: genesis
Workload: Docker Desktop (WSL2 backend) for a local Docker Compose stack
Steps to reproduce
Create / use a Windows Server VM that supports nested virtualization.
Enable Hyper-V, Virtual Machine Platform, Hypervisor Platform, and WSL. Confirm hypervisor launch type is Auto.
Install Docker Desktop configured for the WSL2 backend (do not use --always-run-service).
Sign in over RDP as an interactive user (genesis).
Start Docker Desktop.
Expected result
Docker Desktop starts, the WSL2 engine comes up, and RDP remains available.
Actual result
Within moments of starting Docker Desktop:
RDP disconnects
Port 3389 stops responding
Azure may still report PowerState = Running
Azure may also show a guest OS crash reboot message similar to: “The Virtual Machine is undergoing a reboot due to a guest OS crash. The local data remains unaffected during this process.”
Recovery requires a same-size VM restart (or start if the VM fully stopped/deallocated). This is not caused by DevTest Lab / auto-shutdown deallocate.
Confirmed auto-shutdown / scheduled deallocate is not targeting this VM.
On the previous OS: limited WSL via %UserProfile%\.wslconfig (memory=4GB, processors=2, swap=2GB).
Fully uninstalled Docker Desktop and cleaned leftover Docker paths; disabled/re-enabled WSL and Virtual Machine Platform with reboots.
Clean-reinstalled Docker Desktop without starting it as Local System / from Run Command (SYSTEM start fails for WSL2 with WSL_E_LOCAL_SYSTEM_NOT_SUPPORTED).
Reimaged the OS disk to a clean Windows install; re-enabled Hyper-V / VirtualMachinePlatform / HypervisorPlatform / WSL; reinstalled Docker Desktop.
Starting Docker Desktop as genesis on the reimaged OS still reproduces the hang/crash.
Additional evidence
Pre-reimage Event Log included Hyper-V-related bugchecks such as 0x00020001, plus Kernel-Power / unexpected shutdown events around Docker Desktop / WSL bring-up.
Azure metrics sometimes showed high CPU and availability dropping while PowerState remained Running.
Long az vm run-command scripts during Docker bring-up previously worsened RDP hangs; remote scripts are kept short.
Question
Why does starting Docker Desktop (WSL2 backend) consistently hang or crash-reboot the Windows guest / nested Hyper-V stack on this Azure VM while the control plane still reports Running—even after a clean OS reimage?
Looking for a durable fix or known issue guidance (nested virtualization, Hyper-V, WSL, Docker Desktop, or this VM size/series). Workarounds that actually stick are welcome (for example Hyper-V backend instead of WSL2, alternate install/config).