我正在尝试在Windows 10 PC上创建具有多个节点的Docker Swarm。根据{{3}},我们必须首先使用 docker-machine create 创建多个VM。我按照文档创建了虚拟交换机“ 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将使用多少资源。
所以我试图删除所有创建的VM,然后创建仅具有0.5G内存的新VM,但是它停留在“等待主机启动”并无法创建正确的VM。
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...
我的问题是:
谢谢!
答案 0 :(得分:2)
首先,我将检查是否未满足我的RAM限制。
要执行此操作,请打开命令提示符并运行命令systeminfo
您将看到几行。重要的是Total Physical Memory
和Available Physical Memory
。
如果您有8GB
的ram且2GB
(这是一个猜测)很可能一直被您的计算机使用,则您的显示内容可能已接近极限4GB
用法的帖子。
您还可以查看交换空间/虚拟内存的大小,并查看有多少可用或正在使用中。
请先报告这些发现,然后再开始寻找其他方向。
更多信息here。
在这种情况下创建第三个VM失败的潜在原因是什么?
首先检查您的RAM。正如您的研究表明的那样,很可能是这种情况。
创建仅具有0.5G内存的VM会有什么问题?
您当前遇到的相同问题。 VM没有空间来完成其任务。
在这种情况下,至少应该创建3个VM,我该怎么做?
听起来像您可能想要增加RAM。该问题(除非可以证明)是物理限制。