我无法将docker worker连接到docker swam manager。
我创建了多个aws EC2实例,并使其其中一个作为管理者docker swarm init --listen-addr 0.0.0.0:2377
,并尝试通过其他EC2实例docker swarm join 0.0.0.0:2377
作为工作人员进行连接,但这给了我一个错误。 / p>
"Error response from daemon: Timeout was reached before node joined`.
The attempt to join the swarm will continue in the background".
我需要我的docker swarm管理器列出docker node ls
包括管理器和工作器在内的所有节点。
答案 0 :(得分:0)
您需要在docker swarm join
命令中使用真实IP地址。
“ 0.0.0.0”不是真正的IP地址,它是“所有(本地)IP地址”的别名,不是您可以连接的地址。
答案 1 :(得分:0)
1。在主节点中运行命令: docker swarm join-token worker
2。然后运行从上一步获得的命令
示例:
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
答案 2 :(得分:0)
要解决此问题,我需要公开来自Docker Worker和Docker Manager实例的相应端口。
我在解决此问题时发现了一些信息
TCP端口2377 是用于通信的默认端口,因此请在AWS EC2的安全组中为端口2377添加自定义TCP规则。
TCP端口2376 ,用于安全的Docker客户端通信。 Docker Machine需要此端口。 Docker Machine用于编排Docker主机。
TCP端口2377 ,该端口用于Docker Swarm或群集的节点之间的通信。它只需要在管理器节点上打开。
TCP和UDP端口7946 ,用于节点之间的通信(容器网络发现)。
UDP端口4789 ,用于覆盖网络流量(容器入口网络)。
请注意:除了这些端口以外,还必须打开端口22(用于SSH流量)以及在群集上运行特定服务所需的任何其他端口。