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

Windows Docker:Hyper-V无法找到名为“的虚拟交换机”;DockerNAT“;,windows,docker,docker-machine,docker-for-windows,Windows,Docker,Docker Machine,Docker For Windows,我在Windows10Pro上更新了我的桌面应用程序docker(版本2.0.0.3)。但从那时起,我的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 + ... etAda

我在Windows10Pro上更新了我的桌面应用程序docker(版本2.0.0.3)。但从那时起,我的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
我遵循了链接()中提到的步骤,但没有解决问题。 我还尝试禁用-->重新启动-->然后使用“控制面板\程序\程序和功能”中的“打开或关闭windows功能”启用Hyper V和容器选项

我的网络连接有以下信息

但我仍然无法启动我的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
Hyper-V无法找到名为“DockerNet”的虚拟交换机。
在新开关处:第121行
在,:第411行

打开hyper-v管理器,并在“虚拟交换机管理器”中进行检查,如果您可以看到DockerNet是否在那里,则windows Docker在创建mobylinux vm之前启动时创建了此交换机。 如果您的powershell脚本没有创建此开关,请尝试直接在那里创建它


我也曾经面对过这个问题

我尝试了几种变通办法,但都没有奏效。问题是MobyLinux虚拟机无法创建Docker NAT开关,导致Docker服务无法启动

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

重要信息:您将丢失所有用户定义的网络相关设置。如果其他一切都失败了,试试看

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

net stop vmms
net start vmms

在相关的

中找到,运行MOFCOMP命令并重新启动修复了这个问题

  • 运行此命令:(以管理员身份提示命令) MOFCOMP%SYSTEMROOT%\System32\WindowsVirtualization.V2.mof

  • 然后重新启动


  • ()

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

    Windows 10企业版

    1903年版

    操作系统构建18362.295

    1:-打开“窗口安全”

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

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

    4:-切换到“程序设置”选项卡

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

    6:-点击“编辑”

    7:-向下滚动至“代码流保护(CFG)”并取消选中“覆盖系统设置”


    8:-从powershell“net Start vmcompute”启动vmcompute要解决此问题,请按照以下microsoft文档中所述的步骤进行操作

    然后重新启动你的电脑

    重新启动后

  • 打开Hyper-V管理器
  • 转到虚拟交换机管理器
  • 创建名为DockerNet的新内部虚拟交换机

  • 启动你的码头工人


  • 这些对我都不管用。我尝试了无数其他人报告的可能解决方案。最后,这篇相当古老的帖子帮助了:

    因此,要解决这个问题:

  • 卸载受损的Windows Docker
  • 删除Hyper-V和容器功能,然后重新启动
  • 添加Hyper-V和容器功能,然后重新启动
  • 重新安装Docker for Windows,然后启动它

  • 希望这有帮助

    我在windows 10上也遇到了同样的问题,在安装“MicrosoftEasyFix20159.mini.diagcab”后,我的问题得到了解决。我想,与其手动创建一个新的“名为DockerNet的内部虚拟交换机”,不如安装这个Microsoft Easy Fix。我的Docker桌面给了我一个类似的错误

    正是这样:

    无法删除虚拟交换机“DockerNet”,因为它正在被删除 用于运行虚拟机或分配给子池

    我的解决方案是

  • 打开Hyper-V管理器
  • 关闭默认机器或docker机器的调用方式
  • 然后尝试打开Docker桌面

  • 我希望这对尝试您建议的方法的人有所帮助

    ,即使删除了所有网络配置,仍然会出现相同的错误。无法创建:正在运行的命令已停止,因为首选项变量\n“ErrorActionPreference”或公用参数设置为Stop:Hyper-V无法找到名为“DockerNet”的虚拟交换机。在新交换机上,:第121行,:第411行您是否也删除了“计算机管理->设备管理器->网络适配器”中的网络适配器条目?不,我需要删除吗。@sumitkumar我已更新了我的答案,如果问题仍然存在,请尝试一下。感谢@leopal的新方法,但即使这样似乎也无济于事。请注意,
    Container
    是Hyper-V的一项独立功能。