是否需要打开端口2377、7946、4789来创建docker swarm?

时间:2019-01-21 22:46:59

标签: docker docker-swarm

根据this链接:

  

以下端口必须可用。在某些系统上,这些端口   默认情况下处于打开状态。

     

用于群集管理通信的TCP端口2377   TCP和UDP端口   7946用于节点之间的通信UDP端口4789用于覆盖网络   流量如果您计划使用加密创建覆盖网络   (--opt加密),还需要确保ip协议50(ESP)   允许流量

但是我能够创建一个群集并将其加入节点,而无需在端口上方打开,而且我认为默认情况下它们在我的网络上是打开的。因此,我试图了解上述文档是否不正确?

$.when($("span").fadeIn()).done(function() {
   $.when($("span").fadeOut()).done(function() {
        alert("done!")
   });
});

2 个答案:

答案 0 :(得分:2)

2377 / tcp必须在节点之间打开(这并不意味着对外部流量开放)才能达到目的。如果您在重叠式网络方面遇到问题,例如容器无法彼此连接或访问入口发布的端口,仅当您访问容器恰巧正在运行的同一节点时,该容器才起作用,那么问题很可能是其他端口未打开。

答案 1 :(得分:1)

该问题的答案是。 docker需要这些端口才能工作。我们可以通过在节点上运行netstat -tuplen来查看正在使用哪些端口,以进行验证。

例如,在主节点上,我看到以下内容:

$ netstat -tuplen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        15135221   -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          25361290   -                   
tcp6       0      0 :::2377                 :::*                    LISTEN      0          1423965    -                   
tcp6       0      0 :::7946                 :::*                    LISTEN      0          1423980    -                   
tcp6       0      0 :::22                   :::*                    LISTEN      0          25361301   -                   
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        15135220   -                   
udp        0      0 10.2.0.4:68             0.0.0.0:*                           100        15135187   -                   
udp        0      0 0.0.0.0:4789            0.0.0.0:*                           0          1424168    -                   
udp6       0      0 :::7946                 :::*                                0          1423981    -  

在一个工作节点上,我看到了:

$ netstat -tuplen
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        234169     -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          8088243    -                   
tcp6       0      0 :::7946                 :::*                    LISTEN      0          61278      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      0          8088254    -                   
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        234168     -                   
udp        0      0 10.2.0.7:68             0.0.0.0:*                           100        234114     -                   
udp        0      0 0.0.0.0:4789            0.0.0.0:*                           0          61504      -                   
udp6       0      0 :::7946                 :::*                                0          61279      - 

此外:即使我在下面的配置中拒绝以天蓝色拒绝所有入站网络流量,它还是可以正常工作

enter image description here