25

使用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 地址,因为此系统有多个地址

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

4

7 回答 7

26

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

ifconfig

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

docker swarm init --advertise-addr 192.1.68.1.x

(将默认为端口 2377)

于 2018-04-29T23:15:03.110 回答
24

2017 年 5 月 24 日更新:

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

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

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


原答案:

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

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

于 2016-07-27T02:58:38.550 回答
9

根据 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"

于 2017-05-18T21:50:35.857 回答
5

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

于 2016-07-27T07:49:41.447 回答
4

这对我有用

docker swarm init --advertise-addr 127.0.0.1

在此处输入图像描述

于 2020-03-27T02:42:41.017 回答
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

于 2016-07-27T21:51:46.500 回答
0

请 ssh 进入节点 1,然后在那里应用相同的命令

于 2021-11-16T05:20:54.843 回答