【问题标题】:docker-machine can't create more than two VMsdocker-machine 不能创建两个以上的虚拟机
【发布时间】:2019-03-13 19:46:21
【问题描述】:

我正在尝试在我的 Windows 10 PC 上创建一个具有多个节点的 Docker Swarm。根据Docker official documentation,我们必须先使用 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 将使用多少资源。

所以我尝试删除所有创建的虚拟机,然后创建只有 0.5G 内存的新虚拟机,但它卡在“等待主机启动”并且无法创建正确的虚拟机。

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的VM有什么问题 记忆?
  3. 无论如何我应该怎么做,在这种情况下,至少创建 3 个虚拟机?

提前致谢!

【问题讨论】:

    标签: docker docker-swarm docker-machine boot2docker


    【解决方案1】:

    首先,我会检查我的 RAM 限制是否被满足。

    为此打开命令提示符并运行命令systeminfo

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

    如果您有8GB 的内存和2GB(这是一个猜测)很可能总是被您的机器使用,那么您在@987654327 的帖子中显示的内容可能会接近极限@ 用法。

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

    请在开始向其他方向搜索之前报告这些发现。

    更多信息可以在here找到。

    在这种情况下创建第三个虚拟机失败的潜在原因是什么?

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

    那么创建一个只有 0.5G 内存的 VM 有什么问题?

    您目前遇到的同样问题。虚拟机没有空间来完成它的任务。

    无论如何我应该怎么做,在这种情况下,至少创建 3 个虚拟机?

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

    【讨论】:

    • 感谢您提供检查 systeminfo @treedust 的提示。我有 1395MB 的可用物理内存和 8039 MB 的总物理内存。我刚刚尝试使用默认的 1G 内存和 0.5G 内存分别创建了两次新的 VM。他们都失败了。与以前相同的错误消息。你对它是如何出错的还有更理想的吗?
    • @codigube 所以你有两个虚拟机1GB 和Linux 虚拟机2GB?您正在尝试添加0.5GB 虚拟机?如果是这样,请尝试减少到​​ 1GB vm 和 0.5GB vm x 2。我知道您报告的内容中大约有 0.5GB 可用 RAM;但是,如果您参考链接,您可能需要超过0.5GB 的可用 RAM。请试试这个。如果它不起作用,请尝试0.5GB 的 3 个 VM,否则您可能需要购买更多 RAM :(
    • 嗨@treedust,我已经删除了所有创建的虚拟机并获得了 3.5GB 可用物理内存。但是当我尝试创建一个只有 0.5GB 内存的虚拟机时,它又失败了。但我设法创建了 3 个 900 MB 的 VM(对于 1000 MB,第三个失败了)。所以看起来我们不能创建一个只有 0.5GB 的虚拟机。它可能会达到最低要求。但原因肯定是内存问题。很高兴知道每个 VM 需要多少内存,这样我们就不需要一一猜测大小。不过还是谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2014-07-09
    相关资源
    最近更新 更多