问题
I updated my docker for desktop app (Version 2.0.0.3) on Windows 10 pro.But since then my docker is not starting and throwing following error.
Hyper-V\Get-VMNetworkAdapter : Hyper-V was unable to find a virtual switch with name "DockerNAT".
At C:\Program Files\Docker\Docker\resources\MobyLinux.ps1:121 char:25
+ ... etAdapter = Hyper-V\Get-VMNetworkAdapter -ManagementOS -SwitchName $S ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (DockerNAT:String) [Get-VMNetworkAdapter], VirtualizationException
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.GetVMNetworkAdapter
I followed the steps mentioned in the link (Docker on windows 10 can't startup after deleting MobyLinuxVM in Hyper-V manually ) , but it did not fix the issue. I have also tried disabling --> restarting --> and then enabling Hyper V and containers option using "Turn windows feature on or off" present at "Control Panel\Programs\Programs and Features"
My network connection has following information
But still I am not being able to start my windows Docker app, which keeps throwing
Hyper-V was unable to find a virtual switch with name "DockerNAT".
at New-Switch, <No file>: line 121
at <ScriptBlock>, <No file>: line 411
回答1:
I also faced this issue once.
I tried several workarounds but nothing worked. The issue was that the MobyLinuxVM could not create the Docker NAT switch, as a result Docker service could not be started.
The working solution was to reset my network settings. I cannot remember if I had to remove all network related entries in Computer Management in order to be re-initialized from scratch.
Important: You will lose all user defined network-related settings. Try it if everything else fails.
Edit: Another thing you can try is to restart the Hyper-V management service by executing the following commands in an admin shell:
net stop vmms
net start vmms
Found in related github issue
回答2:
open the hyper-v manger and check in the "Virtual switch manager" if you can see the DockerNAT there or not , Docker for windows created this switch when it starts before creating the mobylinux vm. if your powershell script is not creating this switch ten try to create it directly there .
回答3:
Running the MOFCOMP command and a reboot fixed this problem for me.
Running this command: (Command Prompt as administrator) MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof
Then restart
(https://community.spiceworks.com/how_to/122307-fix-error-managing-hyper-v-server-2012-r2-from-windows-10)
回答4:
I was facing the same issue after updating the docker version and got resolved by doing the following steps. Please note that i have following OS running in my machine.
Edition Windows 10 Enterprise
Version 1903
Os Build 18362.295
1:- Open "Window Security"
2:- Open "App & Browser control"
3:- Click "Exploit protection settings" at the bottom
4:- Switch to "Program settings" tab
5:- Locate "C:\WINDOWS\System32\vmcompute.exe" in the list and expand it
6:- Click "Edit"
7:- Scroll down to "Code flow guard (CFG)" and uncheck "Override system settings"
8:- Start vmcompute from powershell "net start vmcompute"
回答5:
To solve the issue follow the steps which write in the microsoft's document below
https://support.microsoft.com/en-us/help/3101106/you-cannot-create-a-hyper-v-virtual-switch-on-64-bit-versions-of-windo
Then restart your PC.
After restarting
- Open Hyper-V Manager
- Goto Virtual Switch Manager
Create new Internal virtual switch with name DockerNAT
Start your docker
来源:https://stackoverflow.com/questions/54762593/docker-hyper-v-was-unable-to-find-a-virtual-switch-with-name-dockernat