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 ” 。
设置一个新的外部网络交换机以代替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
命令以创建计算机。例如,如果你与后续的一起群模式教程 ,要求你创建三个联网主机上,你可以创建这些群节点:
manager1
,worker1
,worker2
。 -
使用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
命令,请参阅以下主题:
-
运行容器并尝试使用Machine命令和随后的介绍性主题