Docker : Hyper-V was unable to find a virtual switch with name “DockerNAT”

微笑、不失礼 提交于 2019-12-11 02:27:45

问题


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.

  1. Running this command: (Command Prompt as administrator) MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof

  2. 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

  1. Open Hyper-V Manager
  2. Goto Virtual Switch Manager
  3. Create new Internal virtual switch with name DockerNAT

  4. Start your docker



来源:https://stackoverflow.com/questions/54762593/docker-hyper-v-was-unable-to-find-a-virtual-switch-with-name-dockernat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!