Microsoft Hyper-V

预计阅读时间:5分钟

使用Hyper-V在Windows机器上本地创建Boot2Docker虚拟机。

必须在桌面系统上启用Hyper-V。适用于Windows的Docker桌面在安装后会自动启用它。请参阅Microsoft开发人员网络上的本文,以获取有关 如何手动启用Hyper-V的说明

注意事项

  • 您必须使用管理员级别的帐户来创建和管理Hyper-V计算机。

  • 您需要现有的虚拟交换机才能使用驱动程序。Hyper-V可以共享一个外部网络接口(也称为桥接)。请参阅此博客以了解更多信息。如果您想使用NAT,请创建一个内部网络,然后使用 Internet连接共享

  • 该参考页包含一个示例,向您显示如何使用提升的(管理员级别)PowerShell以及如何创建和使用外部网络交换机。

用法

$ docker-machine create --driver hyperv vm

选项

  • --hyperv-boot2docker-url:boot2docker ISO的URL。
  • --hyperv-virtual-switch:要使用的虚拟交换机的名称。
  • --hyperv-disk-size:主机的磁盘大小,以MB为单位。
  • --hyperv-memory:主机的内存大小,以MB为单位。
  • --hyperv-cpu-count:主机的CPU数量。
  • --hyperv-static-macaddress:Hyper-V网络适配器的静态MAC地址。
  • --hyperv-vlan-id:Hyper-V网络适配器的VLAN ID(如果有)。
  • --hyperv-disable-dynamic-memory:禁用动态内存管理。

环境变量和默认值

CLI选项 环境变量 默认
--hyperv-boot2docker-url HYPERV_BOOT2DOCKER_URL 最新的boot2docker URL
--hyperv-cpu-count HYPERV_CPU_COUNT 1
--hyperv-disk-size HYPERV_DISK_SIZE 20000
--hyperv-memory HYPERV_MEMORY 1024
--hyperv-static-macaddress HYPERV_STATIC_MACADDRESS 不明确的
--hyperv-virtual-switch HYPERV_VIRTUAL_SWITCH 第一次发现
--hyperv-vlan-id HYPERV_VLAN_ID 不明确的
--hyperv-disable-dynamic-memory HYPERV_DISABLE_DYNAMIC_MEMORY false

例子:

1.确保已启用Hyper-V。

在Windows的Docker桌面上自动启用了Hyper-V。要手动启用它,请参阅有关如何在Microsoft开发人员网络上手动启用Hyper-V的说明。

2.设置新的外部网络交换机(可选)

注意:如果您已经有一个外部网络交换机,请跳过此设置,而改用该设置。

执行此操作时,请确保您具有以太网连接。

打开Hyper-V管理器。(在Windows 10上,在左下方的搜索字段中搜索Hyper-V Manager。)

在右侧的“操作”面板上选择“ Virtual Switch Manager ” 。

Hyper-V经理

设置一个新的外部网络交换机以代替DockerNAT网络交换机(用于Moby)使用,该默认设置是在安装Windows的Docker Desktop时设置的。如果您已经设置了另一台网络交换机,请改用该网络交换机,但要确保它是一台外部交换机。)

在此示例中,我们创建了一个名为的虚拟交换机Primary Virtual Switch

定义新的虚拟交换机

3.重新启动

在virtualbox看到此问题:等待VM挂起#986

重新启动桌面系统以清除所有路由表问题。如果不先重启,docker-machine create ...可能会挂断电话Waiting for host to start...。如果重新启动后仍然挂在“等待主机启动...”,请确保在虚拟交换机管理器中选择了正确的网络。

4.使用Docker Machine和Microsoft Hyper-V驱动程序创建节点

  • 使用管理员权限启动“提升的” PowerShell。为此,请搜索PowerShell,然后右键单击并选择以管理员身份运行

  • 运行docker-machine create命令以创建计算机。

    例如,如果你与后续的一起群模式教程 ,要求你创建三个联网主机上,你可以创建这些群节点:manager1worker1worker2

  • 使用Microsoft Hyper-V驱动程序并引用您创建的新虚拟交换机。

    docker-machine create -d hyperv --hyperv-virtual-switch <NameOfVirtualSwitch> <nameOfNode>
    

    这是创建manager1节点的示例:

    PS C:\WINDOWS\system32>  docker-machine create -d hyperv --hyperv-virtual-switch "Primary Virtual Switch" manager1
    Running pre-create checks...
    Creating machine...
    (manager1) Copying C:\Users\<your_username>\.docker\machine\cache\boot2docker.iso to C:\Users\<your_username>\.docker\machine\machines\manag
    er1\boot2docker.iso...
    (manager1) Creating SSH key...
    (manager1) Creating VM...
    (manager1) Using switch "Primary Virtual Switch"
    (manager1) Creating VHD
    (manager1) Starting VM...
    (manager1) Waiting for host to start...
    Waiting for machine to be running, this may take a few minutes...
    Detecting operating system of created instance...
    Waiting for SSH to be available...
    Detecting the provisioner...
    Provisioning with boot2docker...
    Copying certs to the local machine directory...
    Copying certs to the remote machine...
    Setting Docker configuration on the remote daemon...
    Checking connection to Docker...
    Docker is up and running!
    To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\Program Files\Doc
    ker\Docker\Resources\bin\docker-machine.exe env manager1
    PS C:\WINDOWS\system32>
    
  • 使用相同的进程,驱动程序和网络交换机来创建其他节点。

    对于我们的示例,命令为:

    docker-machine create -d hyperv --hyperv-virtual-switch "Primary Virtual Switch" worker1
    docker-machine create -d hyperv --hyperv-virtual-switch "Primary Virtual Switch" worker2
    

接下来要去哪里

有趣的是,您创建的虚拟机将 docker-machine create显示在Hyper-V Manager的“虚拟机”下,但您需要使用 docker-machine命令而不是通过Hyper-V Manager对其进行管理。

要开始使用docker-machine命令,请参阅以下主题:

机器Microsoft Hyper-V驱动程序