docker swarm init 中 --advertise-addr 和 --listen-addr 的区别?

这两个参数的区别是什么?

阅读 1.4k
avatarAI BotBETA

在 Docker Swarm 初始化命令 docker swarm init 中,--advertise-addr--listen-addr 是两个不同的参数,用于配置 Swarm 节点的网络地址。

  1. --advertise-addr:这个参数用于指定 Swarm 节点应该向其他节点宣告的地址。通常,这是该节点的公共 IP 地址或可以被其他 Swarm 节点访问的 IP 地址。当其他节点需要连接到该节点时,它们将使用这个地址。如果没有指定 --advertise-addr,则默认使用节点的默认外部 IP 地址。
  2. --listen-addr:这个参数用于指定 Swarm 节点应该监听的 IP 地址和端口。换句话说,它定义了该节点在哪个地址和端口上接受来自其他节点的连接请求。默认情况下,--listen-addr 通常设置为节点的默认内部 IP 地址和 Swarm 默认端口(通常是 2377)。

简而言之,--advertise-addr 是告诉其他节点如何连接到该节点,而 --listen-addr 是定义该节点应该监听哪个地址和端口以接受连接。这两个参数共同确保 Swarm 节点之间的正确通信。

1 个回答

--advertise-addr 指供外部访问的地址(加入集群的节点连接的地址,类似 new Socket()的参数)

--listen-addr是指swarm管理节点的监听地址 (类似 new ServerSocket()的参数)

通常,这两个地址设置一样。

特殊情况下,可以不同。比如:由于某种特殊需要,需要在监听地址和外部访问地址之间插入一个 代理层,做一些权限管理、地址白名单、流量控制之类时候。

监听地址如果设置:0.0.0.0:端口,表示在本机的所有网卡地址上监听;设置ip:端口表示在指定网卡地址上监听;设置127.0.0.1:端口,表示只允许本地连接。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题