在windows 10上使用多台主机运行docker swarm模式

在windows 10上使用多台主机运行docker swarm模式,docker,docker-swarm,docker-swarm-mode,docker-for-windows,Docker,Docker Swarm,Docker Swarm Mode,Docker For Windows,我正在运行安装了最新更新的Windows 10。我正在尝试使用在windows主机上运行docker Linux容器的多个物理主机建立swarm。 当我跑步的时候 docker swarm init --advertise-addr 10.154.26.150 --listen-addr 10.154.26.150:2377 docker swarm init--广告地址10.154.26.150--侦听地址10.154.26.150:2377 在哪里 10.154.26.150 表示我当前机器

我正在运行安装了最新更新的Windows 10。我正在尝试使用在windows主机上运行docker Linux容器的多个物理主机建立swarm。 当我跑步的时候

docker swarm init --advertise-addr 10.154.26.150 --listen-addr 10.154.26.150:2377 docker swarm init--广告地址10.154.26.150--侦听地址10.154.26.150:2377 在哪里

10.154.26.150 表示我当前机器的物理地址(未来swarm manager) 我显然收到了

Error response from daemon: manager stopped: failed to listen on remote API address: listen tcp 10.154.26.150:2377 bind: cannot assign requested address 来自后台程序的错误响应: 经理停止: 未能侦听远程API地址:侦听tcp 10.154.26.150:2377 绑定:无法分配请求的地址 因为运行Linux容器的docker for Windows使用hyper-v vm,对我试图指定的地址一无所知。 因此,这里有一个问题,在这种情况下,运行swarm模式的可能性是否很小,以便我的其他主机能够通过物理网络加入新的swarm。

如果您使用的是“Docker for Windows”,它在Hyper-V中运行Moby VM并模拟本地主机,那么单节点swarm安装就很容易了。它还没有设计成可以轻松地连接外部机器

如果您希望有一个3节点的群集来分散您的测试,它们都可以方便地直接访问彼此,那么我建议使用docker machine在运行boot2docker的Hyper-V中再创建3个VM,如下所示:

docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node1
docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node2
docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node3
注意:要使其正常工作,请参见1。确保您处于PowerShell管理模式,以便docker机器可以控制Hyper-V和2。您需要创建一个“外部”Hyper-V交换机,并在创建VM时使用其名称

有关交换机设置和其他选项(如更改CPU和内存)的详细信息

然后,您可以更改docker CLI,用
&docker machine env nodeX | Invoke Expression
直接控制每一个,并用
docker machine ssh nodeX
等将ssh转换为它们


我使用这个设置,它的作品伟大

谢谢你,但这只是一个主持人,即使对我来说也很有魅力。我正试图在多台主机上创建一个群集,这样它们就可以像群集一样工作。我假设它不适合我,因为我的hyper-v Moby VM中有linux内核代理,因为当我切换到windows容器时,我可以使用我的物理ip地址创建一个swarm,其他机器(运行linux容器)可以加入我的swarm。但在这种情况下,我无法使用覆盖网络使它们相互连接(而同一节点中的同一主机通信工作正常)。现在开始挖掘。我有同样的问题,并在StackExchange的DevOps部分创建了一个问题:。关于这个问题你有什么消息吗?你解决了吗?
docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node1
docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node2
docker-machine create --driver hyperv --hyperv-virtual-switch "Primary Virtual Switch" node3