docker-机器不能创建两个以上的虚拟机

docker-machine can't create more than two VMs

我正在尝试在我的 Windows 10 PC 上创建一个具有多个节点的 Docker Swarm。根据Docker official documentation,我们必须先使用docker-machine create来创建多个虚拟机。我按照文档创建虚拟交换机“myswitch”并使用以下命令:

docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2

成功创建了两个虚拟机:

 PS C:\Users\richard> docker-machine ls
 NAME    ACTIVE   DRIVER   STATE     URL                        SWARM   DOCKER     ERRORS
 myvm1   -        hyperv   Running   tcp://192.168.1.125:2376           v18.09.3
 myvm2   -        hyperv   Running   tcp://192.168.1.128:2376           v18.09.3

但是当我尝试创建第三个时(3 个节点对 Swarm 集群来说是好的),由于某种原因它总是失败:

PS C:\Users\richard> docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm3
Running pre-create checks...
Creating machine...
(myvm3) Copying C:\Users\richard\.docker\machine\cache\boot2docker.iso to C:\Users\rudeng\.docker\machine\machines\myvm3\boot2docker.iso...
(myvm3) Creating SSH key...
(myvm3) Creating VM...
(myvm3) Using switch "myswitch"
(myvm3) Creating VHD
(myvm3) Starting VM...
Error creating machine: Error in driver during machine creation: exit status 1

我在网上做了一些调查。一个潜在的原因可能是没有足够的内存,所以第三个 VM 无法正常启动。如果我们查看以下来自 Windows 上的 Hyper-V 管理器的屏幕截图,我们可以看到默认的 docker VM 占用 2G,每个新 VM 默认使用 1G。我的 PC 有 8G 内存,我不确定 Docker 如何利用 PC 资源以及 Docker 将使用多少资源。

所以我尝试删除所有创建的虚拟机,然后创建只有 0.5G 内存的新虚拟机,但它卡在 "waiting for host to start" 并且未能创建正确的虚拟机。

PS C:\Users\richard> docker-machine create -d hyperv --hyperv-memory "512" --hyperv-virtual-switch "myswitch" myvm3
Running pre-create checks...
Creating machine...
(myvm2) Copying C:\Users\richard\.docker\machine\cache\boot2docker.iso to C:\Users\rudeng\.docker\machine\machines\myvm2\boot2docker.iso...
(myvm2) Creating SSH key...
(myvm2) Creating VM...
(myvm2) Using switch "myswitch"
(myvm2) Creating VHD
(myvm2) Starting VM...
(myvm2) Waiting for host to start...

我的问题是:

  1. 创建第三个虚拟机失败的潜在原因是什么 在这种情况下?
  2. 创建一个只有0.5G的虚拟机有什么问题 记忆?
  3. 无论如何,在这种情况下我应该怎么做才能至少创建 3 个虚拟机?

提前致谢!

首先我会检查我的 RAM 限制没有被满足。

要执行此操作,请打开命令提示符并 运行 命令 systeminfo

您会看到几行。重要的是 Total Physical MemoryAvailable Physical Memory.

如果你有 8GB 的 ram 并且 2GB(这是一个猜测)很可能总是被你的机器使用,你可能会接近你所展示的极限在您 post 的 4GB 用法中。

您还可以查看交换 space / 虚拟内存大小,看看有多少可用或正在使用。

请在开始向另一个方向搜索之前报告这些发现。

可以找到更多信息 here

what's the potential reason for the failure of creating the third VM in this case?

首先检查您的 RAM。正如您的研究表明的那样,情况很可能如此。

And what's the problem of creating a VM with only 0.5G memory?

与您目前遇到的问题相同。 VM 没有空间来执行它的任务。

What should I do anyway, in this case, to create 3 VMs at least?

听起来您可能想要增加 RAM。问题(除非可以证明)是物理限制。