使用多个主机

时间:2017-12-08 00:32:54

标签: docker docker-swarm docker-swarm-mode docker-windows

我正在运行安装了最新更新的Windows 10。我正在尝试使用在Windows主机上运行docker Linux容器的多个物理主机来设置一个群。 当我跑步时

docker swarm init --advertise-addr 10.154.26.150 --listen-addr 10.154.26.150:2377

其中

10.154.26.150

代表我当前机器的物理地址(未来的群体管理器) 我显然收到了

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

因为运行Linux容器的Windows的docker使用hyper-v vm,并且不知道我正在尝试指定的地址。 所以这里有一个问题,如果在这种情况下运行swarm模式的可能性很小,那么我的其他主机将能够通过物理网络加入新的群体。

1 个答案:

答案 0 :(得分:4)

如果您正在使用“Docker for Windows”(在Hyper-V中运行Moby VM并模拟localhost),那么单个节点Swarm设置就很容易了。它尚未设计为可以轻松加入外部机器。

如果你想让一个3节点的swarm扩展你的测试,他们都可以轻松直接访问彼此,那么我建议使用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-machine可以控制Hyper-V和2.您需要创建一个“外部”Hyper-V交换机并使用它创建VM的名称。

有关交换机设置以及更改CPU和内存are in the docker-machine docs等其他选项的详细信息。

然后,您可以更改docker CLI以使用& docker-machine env nodeX | Invoke-Expression直接控制每个人,并使用docker-machine ssh nodeX等ssh进行控制。

我使用此设置,效果很好!