使用多个主机在Windows 10上运行Docker群集模式
我正在运行安装了最新更新的Windows 10。 我正在尝试使用多个在Windows主机上运行docker Linux容器的物理主机来设置swarm。 当我跑步
docker swarm init --advertise-addr 10.154.26.150 --listen-addr 10.154.26.150:2377
哪里
10.154.26.150
代表我当前机器的物理地址(未来swarm manager),我明显得到
守护进程的错误响应: 经理停下了: 无法侦听远程API地址:listen tcp 10.154.26.150:2377 绑定:不能分配请求的地址
因为用于运行Linux容器的Windows的docker使用hyper-v虚拟机并且不知道任何关于我想要指定的地址。 所以这里是一个问题,如果在这种情况下运行群集模式的可能性很小,那么我的其他主机就可以通过物理networkingjoin新的群集。
如果您使用的是“Docker for Windows”,它在Hyper-V中运行Moby VM并模拟本地主机,那么单个节点Swarm安装就很容易。 它还没有devise成轻松join外部机器。
如果你想有一个3节点的swarm来展开你的testing,在那里他们都可以直接访问到彼此,那么我推荐使用docker-machine在运行boot2docker的Hyper-V中创build3个虚拟机,如下所示:
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
注意:为此,请确保您处于PowerShellpipe理模式,以便docker-machine可以控制Hyper-V和2.您需要创build一个“外部”Hyper-V交换机,并使用其名称创build虚拟机
有关交换机设置的详细信息以及更改CPU和内存等其他选项均在docker-machine文档中 。
然后,您可以更改您的docker CLI,使用& docker-machine env nodeX | Invoke-Expression
直接控制每个& docker-machine env nodeX | Invoke-Expression
使用docker-machine ssh nodeX
& docker-machine env nodeX | Invoke-Expression
和ssh。
我使用这个设置,它工作的很好!