0

我对 docker swarm 有点问题。我在 DigitalOcean 上创建了 2 个实例,我将分别使用公共 IP 地址 100.0.0.1 和 100.0.0.2 来引用它们。我以 root 身份 ssh-ed 进入第一个 droplet 并尝试运行该命令docker swarm init,但它返回了一个错误,该错误eth0绑定到 2 个 IP 地址、公共 IP 地址和一个私有 IP 地址。
然后,我尝试运行docker swarm init --advertise-addr 10.0.0.1以防止这种情况发生,并且 swarm 工作。但是每当我尝试从任何地方连接到它时,第二个 droplet 或我的本地机器使用 join 命令打印出来它会返回Error response from daemon: Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.但它永远不会连接到 swarm。
我尝试在没有广告地址的情况下在 ec2 上运行相同的程序,它运行良好,只有在我使用 DigitalOcean 时才会出现问题。有什么帮助吗?
谢谢。

4

3 回答 3

4

对于 DigitalOceandocker-18-04图像:

  1. 开放端口,Swarm 管理器需要:
ufw allow 22/tcp
ufw allow 2376/tcp
ufw allow 2377/tcp
ufw allow 7946/tcp
ufw allow 7946/udp
ufw allow 4789/udp
ufw reload
ufw enable

这些端口需要在管理节点和工作节点上都打开!2. 重启 Docker:systemctl restart docker 3. 在 Droplet 中检查你的私有网络的名称: 4. 使用 Droplet 私有网络的名称ifconfig -a 初始化 swarm 。docker swarm init --advertise-addr eth1:2377eth1

比你可以从工作节点加入这个网络。

于 2020-08-14T11:05:54.670 回答
1

在撰写本文时,DigitalOcean 的 Docker 一键式应用程序似乎已损坏,并且由于某种原因无法连接 swarm 节点。我发现的唯一解决方法是运行普通的 ubuntu(或任何其他操作系统)映像并手动安装 Docker。这似乎解决了问题。

于 2018-02-24T08:09:20.693 回答
0

它也对我有用。我尝试使用 docker 17.12.0 附带的一键式应用程序,但没有成功。然后我尝试使用 docker 18.06.1 重新安装 Ubuntu,它运行良好。

于 2018-08-26T21:58:30.473 回答