Docker1.12工作进程无法加入群集(Swarm:挂起)

Docker1.12工作进程无法加入群集(Swarm:挂起),docker,Docker,管理器版本Docker版本1.12.0-rc5,构建a3f2063 工人版本Docker版本1.12.0-rc5,构建a3f2063 创建Swarm Manager: docker swarm init --advertise-addr "172.25.30.2:4243" Swarm initialized: current node (3kmewyb10p8xj3ke5rpjyw4s8) is now a manager. To add a worker to this

管理器版本
Docker版本1.12.0-rc5,构建a3f2063

工人版本
Docker版本1.12.0-rc5,构建a3f2063

创建Swarm Manager:

docker swarm init --advertise-addr "172.25.30.2:4243"

    Swarm initialized: current node (3kmewyb10p8xj3ke5rpjyw4s8) is now a manager.

    To add a worker to this swarm, run the following command:
        docker swarm join \
        --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-enq26dqnwma38ij48hymtnioq \
        172.25.30.2:4243

    To add a manager to this swarm, run the following command:
        docker swarm join \
        --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-85cwe5pf779qw0knjn6wxdbim \
        172.25.30.2:4243
然后创造了一个工人

docker swarm join --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-enq26dqnwma38ij48hymtnioq 172.25.30.2:4243
    Error response from daemon: Timeout was reached before node was joined. Attempt to join the cluster will continue in the background. Use "docker info" command to see the current swarm status of your node.
我已经检查了工人的日志

time="2016-08-01T00:22:47.449844174-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.449962215-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450025342-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450081950-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450142443-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450202836-07:00" level=error msg="cluster exited with error: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:23:31.351868722-07:00" level=error msg="Handler for POST /v1.24/swarm/join returned error: Timeout was reached before node was joined. Attempt to join the cluster will continue in the background. Use \"docker info\" command to see the current swarm status of your node."
在《码头工人信息》中,我看到了“Swarm:Pending”

我也更新了docker swarm!。尽管如此,该工作者仍无法加入群集。那么,我怎样才能重新去爱呢

更新-1

卸载并删除配置文件,然后再次安装docker 1.12,版本为
docker 1.12.0,内部版本为8eab29e

仍然面临相同的问题(无法加入和
docker info
中的“Swarm:Pending”)以及
/var/logs/upstat/docker.logs中的不同错误

time="2016-08-01T11:22:08.629760770-07:00" level=error msg="Handler for POST /v1.24/swarm/join returned error: Timeout was reached before node was joined. Attempt to join the cluster will continue in the background. Use \"docker info\" command to see the current swarm status of your node."

谢谢。

问题是,我试图使用错误的“端口”加入(如输出中显示的
docker swarm init

1)在“docker swarm init”之前,docker仅在端口“4243”上运行。我已经与
netstat-tulp | grep docker
进行了核对。所以我在那个港口登广告

root@veeru:~# netstat -tulpn | grep docker
tcp6       0      0 :::4243                 :::*                    LISTEN      8750/dockerd 

root@veeru:~# docker swarm init --advertise-addr "172.25.30.2:4243"
Swarm initialized: current node (exvwgj0pu4cd124ljnblt9xff) is now a manager.

To add a worker to this swarm, run the following command:
    docker swarm join \
    --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-6zomhgu204m9alq51f632nzas \
    172.25.30.2:4243

To add a manager to this swarm, run the following command:
    docker swarm join \
    --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-axhgqgo4jqw4hv38x578m44wh \
    172.25.30.2:4243
2)
docker swarm init
之后,docker使用4个端口运行,包括端口
2377
netstat-tupln | grep docker

在第1点中,它告诉我们在worker中使用port
4243运行
docker swarm join
。以前我确实是那样跑的!。(这行不通!)

后来我离开了docker swarm,加入了port2377。现在我可以加入了

docker swarm join --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-6zomhgu204m9alq51f632nzas 172.25.30.2:2377

我遇到了类似的问题,而在我的例子中,由于防火墙规则,端口被阻塞。

我也遇到了同样的问题。我在Azure中运行coreos虚拟机。我发现我所有的虚拟机都有相同的私有ip地址和不同的公共ip地址。当虚拟机是同一安全组的一部分时,通常会发生这种情况,但这次不是这样。问题是我的帐户已达到最大资源数,因此我删除了资源,如ip地址、nsg、网络等,然后重新配置新的虚拟机,它们具有不同的专用ip,运行命令时一切正常。我的docker版本是1.12.6

对我来说,这也是一个防火墙问题

  • 我试图ping到manager节点,但正在ping回

  • 检查端口是否正在使用telnet打开,并且无法连接,并确定是端口问题

  • 如果您运行的是Centos,则可以使用firewalld轻松打开端口

    检查防火墙是否正在运行

    sudo firewall-cmd --state
    
    打开您想要的端口

    sudo firewall-cmd --zone=public --add-port=2377/tcp
    

    根据要连接的节点端口更改端口

    只需公开manager的2377端口,它就可以工作。

    很明显,这意味着节点无法连接管理器,因此超时正好符合相同要求,只需执行telnet管理器ip 2377(不要尝试ping,将无法工作)

    如果在节点和管理器中都禁用了所有防火墙,但仍面临相同的错误,请尝试创建另一个管理器,以暴露端口2377,如下所示:

    docker-machine create --driver amazonec2 --amazonec2-open-port 2377 manager1
    

    现在,尝试将节点连接到现在创建的新管理器,但若要使用diff,则用于连接的端口应为2377,然后在上面的命令中公开该端口。做同样的事情对我来说很有效,因为我怀疑其他人使用了其他不同的服务器,但我对管理器和节点都使用相同的服务器。

    根据dockers网站,他们声明了要启用的端口。 在Swam管理器和辅助节点上运行以下命令

    sudo ufw enable
    sudo ufw allow 22/tcp
    sudo ufw allow 2376/tcp
    sudo ufw allow 2377/tcp
    sudo ufw allow 7946/tcp
    sudo ufw allow 7946/udp
    sudo ufw allow 4789/udp
    sudo ufw reload
    

    我们刚刚允许进入必要的港口。运行这些命令后,所有docker命令现在都应该可以工作。

    显然,我也遇到了同样的问题。对我来说,解决办法是确定工人的日期。要明确的是,工人中的日期不正确(是一个旧日期)。我让工人们使用NTP服务器,这就解决了这个问题(我想)。我写这篇文章并不是为了解决问题,因为我不完全理解正在发生的事情。我只知道这对我有用,我也有同样的问题。可能是因为生成的令牌(加入集群)取决于时间。我也有同样的问题@IntiGonzalez Herrera提到的日期/时间就是解决方案。由于一些防火墙问题,我无法设置NTP服务器,但想象一下,我至少可以使用NTP将我的所有工作人员同步到管理器。我用于测试swarm的一个快速解决方案是将时间与日期同步--set=“$(sshuser@serverdate)“我遇到了相同的问题。服务器位于不同的时区。然后来到同一时区修复了该问题。
    sudo ufw enable
    sudo ufw allow 22/tcp
    sudo ufw allow 2376/tcp
    sudo ufw allow 2377/tcp
    sudo ufw allow 7946/tcp
    sudo ufw allow 7946/udp
    sudo ufw allow 4789/udp
    sudo ufw reload