【问题标题】:Docker : Hyper-V was unable to find a virtual switch with name "DockerNAT"Docker:Hyper-V 找不到名为“DockerNAT”的虚拟交换机
【发布时间】:2019-07-12 17:47:12
【问题描述】:

我在 Windows 10 专业版上更新了桌面应用程序的 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

我按照链接 (Docker on windows 10 can't startup after deleting MobyLinuxVM in Hyper-V manually) 中提到的步骤操作,但没有解决问题。 我还尝试禁用 --> 重新启动 --> 然后使用“控制面板\程序\程序和功能”中的“打开或关闭 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

【问题讨论】:

    标签: windows docker docker-machine docker-for-windows


    【解决方案1】:

    我也遇到过这个问题。

    我尝试了几种解决方法,但都没有奏效。问题是 MobyLinuxVM 无法创建 Docker NAT 开关,导致 Docker 服务无法启动。

    有效的solution 用于重置我的网络设置。我不记得我是否必须在计算机管理中删除所有与网络相关的条目才能从头开始重新初始化。

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

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

    net stop vmms
    net start vmms
    

    在相关github issue找到

    【讨论】:

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

    打开 hyper-v 管理器并检查“虚拟交换机管理器”是否可以看到 DockerNAT 那里,Docker for windows 在它时创建了这个开关在创建 mobylinux 虚拟机之前开始。 如果您的 powershell 脚本没有创建此开关十,请尝试直接在那里创建它。

    【讨论】:

      【解决方案3】:

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

      Windows 10 企业版

      版本 1903

      操作系统内部版本 18362.295

      1:- 打开“窗口安全”

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

      3:- 点击底部的“Exploit protection settings”

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

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

      6:- 点击“编辑”

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

      8:- 从 powershell "net start vmcompute" 启动 vmcompute

      【讨论】:

        【解决方案4】:

        这些都不适合我。我尝试了无数其他人报告的可能解决方案。最后,这个相当老的帖子帮助了: 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 和容器功能,然后重新启动
        3. 添加 Hyper-V 和容器功能,然后重新启动
        4. 重新安装 Docker for Windows 然后启动它

        希望这会有所帮助!

        【讨论】:

        • 请注意,Container 是 Hyper-V 的独立功能。
        【解决方案5】:

        运行 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)

        【讨论】:

          【解决方案6】:

          要解决这个问题,请按照下面微软文档中的步骤进行操作

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

          然后重启你的电脑。

          重启后

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

          4. 启动你的 docker

          【讨论】:

            【解决方案7】:

            我在 Windows 10 上遇到了同样的问题,安装“MicrosoftEasyFix20159.mini.diagcab”后,我的问题得到了解决。我认为与其手动创建一个新的“名为 DockerNAT 的内部虚拟交换机”,不如安装这个 Microsoft Easy Fix 工作。

            【讨论】:

              【解决方案8】:

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

              原来是这样的:

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

              我的解决方案是

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

              我希望这对某人有帮助

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-02-06
                • 1970-01-01
                • 1970-01-01
                • 2019-11-29
                • 2019-08-08
                相关资源
                最近更新 更多