Docker:Hyper-V无法找到名称为“ DockerNAT”的虚拟交换机

时间:2019-02-19 09:18:05

标签: windows docker docker-machine docker-windows

我在Windows 10专业版上更新了用于桌面应用程序(2.0.0.3版)的Docker。但是从那时起,我的docker就没有启动并引发以下错误。

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

我按照链接(Docker on windows 10 can't startup after deleting MobyLinuxVM in Hyper-V manually)中提到的步骤进行操作,但是并没有解决问题。 enter image description here 我也尝试过禁用->重新启动->,然后使用“控制面板\程序\程序和功能”中出现的“打开或关闭Windows功能”来启用Hyper V和容器选项

我的网络连接具有以下信息 enter image description here

但是仍然无法启动Windows Docker应用程序,该应用程序不断抛出

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

8 个答案:

答案 0 :(得分:1)

打开hyper-v管理员,并在“虚拟交换机管理器”中检查是否可以看到 DockerNAT 用于Windows的Docker 在创建该交换机时在创建mobylinux vm之前启动。 如果您的Powershell脚本没有创建此开关,请尝试十个直接在此处创建它。 enter image description here

答案 1 :(得分:1)

我也曾经遇到过这个问题。

我尝试了几种解决方法,但没有任何效果。问题是MobyLinuxVM无法创建Docker NAT交换机,结果是无法启动Docker服务。

有效的solution是要重置我的网络设置。我不记得是否必须删除“计算机管理”中所有与网络相关的条目,以便从头开始重新初始化。

重要:您将丢失所有用户定义的与网络相关的设置。如果其他所有方法都失败,请尝试一下。

编辑:您可以尝试做的另一件事是通过在管理外壳中执行以下命令来重新启动Hyper-V管理服务:

net stop vmms
net start vmms

在相关的github issue中找到

答案 2 :(得分:0)

运行MOFCOMP命令并重新启动为我解决了此问题。

  1. 运行此命令:(命令提示符为管理员) MOFCOMP%SYSTEMROOT%\ System32 \ WindowsVirtualization.V2.mof

  2. 然后重新启动

https://community.spiceworks.com/how_to/122307-fix-error-managing-hyper-v-server-2012-r2-from-windows-10

答案 3 :(得分:0)

更新docker版本后,我遇到了同样的问题,并通过执行以下步骤得到解决。请注意,我的机器上正在运行以下操作系统。

版本Windows 10企业版

1903版

Os内部版本18362.295

1:-打开“窗口安全性”

2:-打开“应用和浏览器控件”

3:-单击底部的“利用保护设置”

4:-切换到“程序设置”标签

5:-在列表中找到“ C:\ WINDOWS \ System32 \ vmcompute.exe”并将其展开

6:-单击“编辑”

7:-向下滚动到“代码流防护(CFG)”,然后取消选中“覆盖系统设置”

8:-从Powershell“ net start vmcompute”启动vmcompute

答案 4 :(得分:0)

要解决此问题,请按照下面Microsoft文档中编写的步骤进行操作

https://support.microsoft.com/en-us/help/3101106/you-cannot-create-a-hyper-v-virtual-switch-on-64-bit-versions-of-windo

然后重新启动PC。

重启后

  1. 打开Hyper-V管理器
  2. 转到虚拟交换机管理器
  3. 使用名称DockerNAT创建新的内部虚拟交换机

    enter image description here

  4. 启动您的docker

答案 5 :(得分:0)

这些都不适合我。我尝试了无数其他人报告的可能解决方案。最后,这个比较老的帖子帮助了: https://forums.docker.com/t/latest-failed-docker-update-makes-hyper-v-unable-to-create-virtual-ethernet-switch-0x80041002/44109

所以要解决此问题:

  1. 为Windows卸载严重的Docker
  2. 同时删除Hyper-V和Containers功能,然后重新启动
  3. 重新添加Hyper-V和容器功能,然后重新启动
  4. 重新安装适用于Windows的Docker,然后启动它

希望这会有所帮助!

答案 6 :(得分:0)

我在Windows 10上遇到了同样的问题,安装了“ MicrosoftEasyFix20159.mini.diagcab”后,我的问题已解决。我认为安装此Microsoft Easy Fix可以代替手动创建新的“名称为DockerNAT的内部虚拟交换机”。

答案 7 :(得分:0)

我的Docker桌面给了我类似的错误

正是这样:

无法删除虚拟交换机“ DockerNAT”,因为它正在被删除 由运行的虚拟机使用或分配给子池。

我的解决方案是

  1. 打开Hyper-V管理器
  2. 关闭默认计算机或如何调用docker-machine
  3. 然后尝试打开Docker Desktop

我希望这对某人有帮助