docker swarm init无法selectIP地址错误

试验Docker Swarm,我这样做了:

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 

最后一条命令(docker swarm init)返回这个在Google上找不到的错误:

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

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

更新2017-05-24:

先前的答案是群体模式的早期状态。 秘密和自动接受选项已被删除,并已添加advertise-addr选项。 这现在可以通过完成:

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

该端口将默认为2377.您也可以使用networking接口名称而不是IP地址,群组将在该接口上查找IP地址。 侦听器地址仍然是一个选项,但默认情况下是侦听通常是首选解决scheme的所有接口。


原始答案:

我还没有用docker-machine做过这个,但是我知道新的swarm对/ etc / hosts中的条目非常敏感。 确保您的IP和主机名在该文件中,并且只在一个位置(不映射到回送或任何其他内部地址)。 从RC3开始,他们也使用广播地址的监听者地址,所以确保这个主机名或者ip可以被群中的所有节点引用(很确定,如果这个问题还没有解决的话,那么这个问题已经解决了)。

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

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

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

获取有关需要使用的错误–advertise-addr?

通过运行docker-machine ls来复制虚拟机的IP地址,然后再次运行docker swarm init命令,使用该IP并使用–advertise-addr指定端口2377(swarm连接的端口)。 例如:

docker-machine ssh myvm1“docker swarm init –advertise-addr 192.168.99.100:2377”

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

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