如何将 docker swarm worker 连接到 swarm manager - AWS EC2

how to connect docker swarm worker to swarm manager - AWS EC2

我无法将我的 docker 工作人员连接到 docker 游泳管理员。

我创建了多个 aws EC2 实例,并将其中一个设为管理器 docker swarm init --listen-addr 0.0.0.0:2377 并尝试通过其他 EC2 实例 docker swarm join 0.0.0.0:2377 连接它作为工作人员,但它给了我一个错误.

 "Error response from daemon: Timeout was reached before node joined`. 
The attempt to join the swarm will continue in the background".

我需要我的 docker swarm manager 列出 docker node ls 所有节点,包括 manager 和 workers。

您需要在docker swarm join命令中使用真实的IP地址。

“0.0.0.0”不是真正的 ip-address,它是 "all (local) ip-addresses" 的别名,您无法连接到它。

1.runmaster节点中的命令: docker群join-token工人

2.and 比 运行 从上面的步骤

获得的命令

示例:

root@ubuntu:~# docker swarm join-token worker 要向该群中添加一个工人,运行 以下命令:

docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377

root@ubuntu:~#

运行 在工作节点上: docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377

为了解决这个问题,我需要从 Docker Worker 和 Docker Manager 实例公开各自的端口。

我在解决这个问题的过程中发现了一些信息,

TCP 端口 2377 是用于通信的默认端口,因此在 aws EC2 的安全组中为端口 2377 添加自定义 tcp 规则。

TCP 端口 2376 用于安全 Docker 客户端通信。 Docker 机器需要此端口才能工作。 Docker 机器用于编排 Docker 台主机。

TCP 端口 2377 此端口用于 Docker Swarm 或集群的节点之间的通信。只需要在manager节点上开启即可。

TCP 和 UDP 端口 7946 用于节点间通信(容器网络发现)。

UDP 端口 4789 用于覆盖网络流量(容器入口网络)。

请注意:除了这些端口之外,端口 22(用于 SSH 流量) 以及特定服务所需的任何其他端口 运行 必须打开集群。