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

Jus*_*tin 18 docker docker-swarm docker-machine docker-for-mac docker-desktop

与尝试多克群码头工人Mac版桌面.我试过这个:

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
Run Code Online (Sandbox Code Playgroud)

最后一个命令(docker swarm init)返回此错误:

来自守护程序的错误响应:无法选择要广告的IP地址,因为此系统具有多个地址

我不知道是怎么回事.任何人都知道如何调试?

BMi*_*tch 21

更新2017-05-24:

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

docker swarm init \
  --advertise-addr $(docker-machine ip node-1)
Run Code Online (Sandbox Code Playgroud)

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


原始答案:

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

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

  • 很高兴看到advertise-addr将它变成了RC4.使用`--advertise-addr`配置公共IP或主机名,然后只需执行`--listen-addr 0.0.0.0:2377`(假设这是您的端口). (3认同)
  • 它在这里工作`docker swarm init --advertise-addr XXXX`你应该给你的主机ip (3认同)

Gen*_*ovo 18

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

ifconfig
Run Code Online (Sandbox Code Playgroud)

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

docker swarm init --advertise-addr 192.1.68.1.x
Run Code Online (Sandbox Code Playgroud)

(将默认为端口2377)


Jes*_*ral 7

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

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

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

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

  • 这正是启动 $ docker swarm init --advertise-addr 192.168.99.100:2377 谢谢!我有 Docker 版本 17.05.0-ce-rc1,构建 2878a85 (2认同)

bla*_*hub 6

这对我有用

docker swarm init --advertise-addr 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

将docker与envs一起使用连接到docker-machine-created的机器时出现相同的错误。之后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起作用。