首页/网络/常用端口速查/7946 Docker Swarm 节点通信

7946 Docker Swarm 节点通信

Swarm 集群节点间的 gossip/容器网络发现端口(TCP+UDP 7946):与 2377 管理口、4789 VXLAN 数据面配套。

常用端口速查网络更新于 2026-10-13

Swarm 节点通信口

7946 是 Docker Swarm 集群里节点之间通信的端口,TCP 与 UDP 都使用它:节点通过它做成员发现与状态同步,overlay 网络的元数据也依赖这条通道。它和 2377 的集群管理口、4789 的 overlay 数据通道构成一组,三者缺一不可,只放行其中一部分是集群失联最常见的配置原因。

基本信息

服务Docker Swarm 节点通信
协议TCP 与 UDP 7946(两者都要)
用途节点发现与 overlay 网络元数据同步
配套端口2377 管理、4789 overlay 数据
通信范围仅集群节点之间

典型使用场景

  • 新建集群:开通节点之间的端口前先规划好防火墙规则
  • 节点加入失败:排查时优先确认 7946 的 TCP 与 UDP 是否都通
  • 跨机房部署:评估站点间 UDP 质量是否支撑成员发现
  • 扩容:新节点加入前把它与既有节点的双向放行配好
  • 网络核查:确认管理口没有对办公网或公网开放

集群端口

端口协议作用
2377TCP集群管理通信,节点加入与命令下发
7946TCP 与 UDP节点发现与状态同步
4789UDPoverlay 网络数据通道
4789 段UDP自定义 overlay 时需另行规划

放行与核对

放行与核对
# 一次性放行三组端口(firewalld 示例)
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp
firewall-cmd --reload
# 查看集群节点状态
docker node ls
# 确认本机监听与连接情况
ss -lntup | grep 7946
节点被标记为失联时,先看 7946 的 UDP 是否可达:TCP 放行而 UDP 被拦是很常见的半配置状态,节点能加入集群却在后续同步中不断掉线,表现为服务被反复重建。
集群通信口不具备面向公网的加固设计:把 2377 或 7946 暴露到公网,等于把集群成员关系与调度能力开放出去。生产部署应让它们只在集群节点之间可达。
成员列表以内部状态文件保存:节点被移除后若用同一台主机加回集群,需先清理残留的集群状态,否则会以旧身份加入并带来重复成员记录。变更操作前先备份该状态,回退时才有依据。

部署要点

  • 三组端口成对放行,不要只开一半
  • 跨机房场景先测 UDP 往返质量与丢包
  • 新节点加入前先把双向策略配好
  • 管理口与业务口在网段上尽量分离

易错点

  • 只放行 7946 的 TCP 漏掉 UDP:节点能加入但持续掉线,服务反复重建
  • 跨机房 Swarm 未评估 UDP 质量:成员发现不稳定,集群状态反复摇摆
  • 扩容节点漏配放行:新节点加入失败,排查却从应用侧找原因
  • 把 2377 暴露到公网:集群管理与成员关系对外可见

数据来源与参考

  • Docker 官方文档(Swarm 端口清单)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌