docker - 无法创建仅主机适配器 - Windows 10、docker、virtualbox

标签 docker virtual-machine virtualbox docker-machine docker-toolbox

在使用 docker toolbox 一段时间后,我最近遇到了这个问题。

Windows更新后开始发生?

Windows 10 家庭版 - 64

卸载并重新安装 Docker 工具箱

卸载并重新安装各种版本的 VirtualBox

仍然得到同样的错误

Running pre-create checks...
Creating machine...
(default) Copying C:\Users\me\.docker\machine\cache\boot2docker.iso to C:\Users\me\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to create a network adapter. Sometimes, such confirmation window is minimized in the taskbar.
(default) Creating a new host-only adapter produced an error: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe hostonlyif create failed:
(default) 0%...
(default) Progress state: E_FAIL
(default) VBoxManage.exe: error: Failed to create the host-only adapter
(default) VBoxManage.exe: error: Querying NetCfgInstanceId failed (0x00000002)
(default) VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
(default) VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 71 of file VBoxManageHostonly.cpp
(default)
(default) This is a known VirtualBox bug. Let's try to recover anyway...
Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue
Looks like something went wrong in step ´Checking if machine default exists´... Press any key to continue...

最佳答案

这个答案与 Docker 没有特别的关系,但看到这是最近在 Google 上搜索 时 HitTest 门的 Stack Overflow 搜索结果之一(连同 this 问题)。 “无法创建仅主机适配器”来自 VirtualBox 的错误消息,我将其留在这里,希望对其他人有所帮助。

作为旁注,如果可以,我建议您使用 Docker For Windows而不是 Docker Toolbox 在 Windows 上运行 Docker(需要 Windows 10 Professional 或 Enterprise 64 位)。

我的场景:

  • Windows 10 专业版 1709
  • 我尽可能使用 Hyper-V 来运行虚拟机,但需要使用 Windows XP 作为 guest 操作系统运行旧的 VirtualBox VM
  • VirtualBox 5.2.4-119785(Windows 仅支持单个管理程序 - 如果您需要在 Hyper-V 和 VirtualBox 之间切换,我可以推荐 this approach)
  • VirtualBox 没有(或未能)在安装时创建仅主机适配器

  • 尝试使用主机网络管理器 GUI 创建仅主机适配器时,我收到可怕的“无法创建仅主机适配器”错误消息,详细信息为: "查询 NetCfgInstanceId 失败 (0x00000002)" .

    因为我使用 Hyper-V,所以除了实际的物理适配器之外,我还有许多 Hyper-V 虚拟以太网适配器。

    Network Connections

    查看物理适配器的属性,Hyper-V 关闭除“Hyper-V 可扩展虚拟交换机”之外的所有协议(protocol)驱动程序似乎是正常的。 Windows 然后通过其中一个虚拟适配器获得网络连接,在我的例子中它被称为“外部虚拟交换机”,并且在那里启用了一组常用的协议(protocol)驱动程序(TCP/IPv4 等)。

    Hyper-V Extensible Virtual Switch

    然后我注意到 VirtualBox 似乎(想要)以类似的方式工作,因为它设法安装并启用了一个名为“VirtualBox NDIS6 桥接网络驱动程序”的新协议(protocol)驱动程序。

    VirtualBox NDIS6 Bridged Networking Driver

    当我检查其他虚拟适配器的属性时,我注意到所有这些适配器都启用了“VirtualBox NDIS6 桥接网络驱动程序”,但没有启用“Hyper-V 可扩展虚拟交换机”。 似乎很奇怪在 Hyper-V 虚拟适配器上启用了 VirtualBox 驱动程序 ,所以我在所有这些上禁用了它,但在物理适配器上启用了它。

    我认为在这个阶段我为了好运而进行了一次很好的重启,尽管我怀疑这是否真的有必要。当我随后再次尝试创建 VirtualBox 仅主机适配器时,它成功了! (我实际上从 VirtualBox 收到了一条错误消息,在我必须在任务栏上找到的模式中,关于适配器名称已被使用。但是,Windows 网络连接下出现了一个新的“VirtualBox Host-Only Ethernet Adapter”,当我关闭并重新打开 VirtualBox 主机网络管理器窗口,适配器也出现在那里。)

    TL; 博士;

    我的理论是 VirtualBox 出于某种原因无法确定哪个适配器是实际的物理网络适配器,并且以一种相当火爆的方式继续并在 上启用其“VirtualBox NDIS6 桥接网络驱动程序”每它找到的适配器。

    此外,它似乎无法确定它需要为哪个适配器创建其虚拟“包装器适配器”并失败。

    即使您不使用/拥有 Hyper-V,您也可能有多个适配器,包括虚拟适配器(例如,许多 VPN 软件也安装了虚拟适配器)。

    在尝试再次创建 VirtualBox 仅主机适配器之前,您可以尝试在除实际物理网络适配器之外的所有适配器上禁用“VirtualBox NDIS6 桥接网络驱动程序”。

    从 VirtualBox 的公共(public) bugtracker 和其他地方的大量相关票证来看,这对于 VirtualBox 来说肯定不是一个新问题,其中一些已经超过 2 年了。我有一种感觉,对于很多人来说,问题可能与我上面描述的有关,所以希望这对他们有所帮助。

    编辑 01/15

    嗯,回想起来,我不确定 Windows 使用 Hyper-V“外部虚拟交换机”进行网络连接有多正常。如果我没记错的话,Hyper-V 创建并通过 NAT 为 guest 提供连接的“默认”开关是一个相对较新的东西,并且在需要添加和使用“外部”开关之前......在我的家用 PC 上,没有一个“外部”开关,正常(TCP/IPv4 等)协议(protocol)驱动程序在物理网络适配器上保持启用状态,并且在物理和虚拟适配器上禁用“Hyper-V 可扩展虚拟交换机”。我还没有机会测试如果在这些情况下添加新的“外部虚拟交换机”会发生什么。

    关于docker - 无法创建仅主机适配器 - Windows 10、docker、virtualbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43580778/

    相关文章:

    vagrant - 使用 Vagrant 自定义开发人员设置

    linux - 传输端点未连接 - Mesos 从站/主站

    macos - 在Mac OS上安装Virtual Box-未加载内核驱动程序

    Docker临时文件策略

    linux - 虚拟连续与物理连续内存

    networking - 如何从访客计算机访问主机?

    licensing - 如何保护应用程序免受虚拟机的复制

    docker - 到 Kubernetes 的多播流量

    Docker:旧版--link参数的等价物是什么

    nginx - 在 Nginx 中通过主机名动态查找容器的地址