docker swarm init无法选择IP地址错误

时间:2016-07-27 02:50:06

标签: docker docker-swarm docker-machine docker-for-mac docker-desktop

使用 Docker Desktop for Mac 试验 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)返回此错误:

  

来自守护程序的错误响应:无法选择IP地址   因为这个系统有多个地址

我不知道发生了什么。任何人都知道如何调试?

6 个答案:

答案 0 :(得分:16)

更新2017-05-24:

之前的答案是针对群体模式的早期状态。此后删除了secret和auto-accept选项,并添加了advertise-addr选项。现在可以通过以下方式完成:

{{1}}

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

原始回答:

我还没有使用docker-machine完成此操作,但我知道新的swarm对/ etc / hosts中的条目非常敏感。确保您的IP和主机名在该文件中,并且只在一个地方(不会映射到环回或任何其他内部地址)。从RC3开始,它们也使用广告地址的侦听器地址,因此请确保群集中的所有节点都可以引用此主机名或IP(非常确定即将到来的修复程序,如果尚未在此处)。

为了最大限度地降低客户端和服务器版本之间出现问题的风险,我还可以直接在虚拟机内部运行命令,而不是使用docker-machine环境变量。

答案 1 :(得分:13)

首先在网络上查找您机器的公共IP

ifconfig

选择物理的192.168.1.x(不是docker0,这是Docker内部的虚拟IP)

docker swarm init --advertise-addr 192.1.68.1.x

(将默认为端口2377)

答案 2 :(得分:7)

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

  

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

     

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

     

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

答案 3 :(得分:5)

使用带有envs的docker连接到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起作用。

答案 4 :(得分:3)

这对我有用

docker swarm init --advertise-addr 127.0.0.1

enter image description here

答案 5 :(得分:1)

检查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