泊坞窗群的init不能选择一个IP地址错误

问题描述:

与码头工人群进行实验,我这样做:泊坞窗群的init不能选择一个IP地址错误

docker-machine create -d virtualbox node-1 
docker-machine create -d virtualbox node-2 
docker-machine create -d virtualbox node-3 

eval $(docker-machine env node-1) 

docker swarm init \ 
    --secret my-secret \ 
    --auto-accept worker \ 
    --listen-addr $(docker-machine ip node-1):2377 

最后的命令(泊坞窗群INIT)返回此错误,这是无处在谷歌中找到:

Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses 

我不知道发生了什么事。任何人有任何想法如何调试?谢谢!

更新2017年5月24日:

现有的答案是对的群模式的早期状态。秘密和自动接受选项已被删除,并且已添加advertise-addr选项。这现在可以做到:

docker swarm init \ 
    --advertise-addr $(docker-machine ip node-1) 

的端口将默认为2377.您还可以使用,而不是一个IP地址的网络接口名称和群会查找该接口的IP地址。侦听器地址仍然是一个选项,但默认情况下是侦听所有通常是首选解决方案的接口。


原来的答复:

我还没有搬运工人机做到了这一点,但我确实知道,新群是在/ etc/hosts中的条目非常敏感。确保您的IP和主机名在该文件中,并且只在一个位置(不映射到回送或任何其他内部地址)。从RC3开始,他们也使用侦听器地址作为广告地址,因此请确保该主机名或ip可以被群中的所有节点引用(如果不在此处,很确定是否有修复)。

为了最大限度地减少客户端和服务器版本之间的问题风险,我还会直接在virtualbox内运行命令,而不是在docker-machine环境变量中运行命令。

+0

我不知道发生了什么,但错误现在说:从错误响应守护进程:由于该系统具有多个地址,因此无法选择要公告的IP地址 - 使用--advertise-addr指定一个地址。因此,我所做的是将--advertise-addr添加为与--listen - addr标志相同,即$(docker-machine ip node-1):2377。然后它工作。不知道--listen-addr或--advertise-addr和--advertise-addr之间的区别似乎不在它们的文档中,https://docs.docker.com/engine/reference/ commandline/swarm_init/ – Justin

+2

很高兴看到advertise-addr将它变成RC4。使用'--advertise-addr'配置公共IP或主机名,然后执行'--listen-addr 0.0.0.0:2377'(假设你的端口)。 – BMitch

+2

它工作'码头swarm初始--advertise-addr X.X.X.X'在这里你应该给你的主机的IP –

使用docker与envs连接到docker-machine创建的机器时遇到同样的错误。 在docker-machine ssh <machine-name>之后,并在机器上本地执行docker swarm init,我也收到了关于--advertise-addr的消息。然后本地命令docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100:2377工作。

检查docker --version并确保客户端和服务器版本相同。如果它们不同,请使用以下命令来提取与计算机上的泊坞窗客户端相匹配的boot2docker版本。

docker-machine create --driver virtualbox --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc4/boot2docker-experimental.iso manager1

+1

我认为1.12-RC4没有--advertise-addr标志。它只能从1.12-rc5获得。 – srivats

根据Docker's指南:https://docs.docker.com/get-started/part4/#create-a-cluster

得到一个错误约需要使用--advertise,地址?

复制运行泊坞窗机 LS为您的虚拟机的IP地址,然后再次运行泊坞窗群init命令,使用IP和 指定端口2377(端口用于连接群)与--advertise-地址。 例如:

泊坞窗机SSH myvm1“泊坞窗群的init --advertise-地址 192.168.99.100:2377”

+0

这是完全需要启动$ docker swarm init --advertise-addr 192.168.99.100:2377谢谢!我有Docker版本17.05.0-ce-rc1,build 2878a85 –

+0

非常好!完美地工作 –