不同宿主机docker容器通信

本文详细描述了如何在Linux环境下搭建DockerSwarm集群,包括创建swarm集群、获取加入令牌、添加工作节点,以及配置网络以实现不同宿主机间的docker通信,涉及端口开放和overlay网络的创建与服务连接。
摘要由CSDN通过智能技术生成

docker跨主机通信

最近在搭建一个分布式linux性能监控项目,需要实现不同宿主机中的docker通信问题,记录一下过程。

1. swarm集群创建
  1. 初始化swarm:将当前主机设置为swarm管理节点
docker swarm init
  1. 获取 Swarm 集群初始化令牌:在现有的 Swarm 管理节点上,使用以下命令获取加入集群所需的令牌:
docker swarm join-token worker

这将生成一个加入令牌,你需要将这个令牌提供给要加入集群的工作节点

  1. 在要加入的节点上执行加入命令:在要加入 Swarm 集群的每个节点上,使用上一步中生成的加入令牌执行以下命令:
docker swarm join --token <token> <manager-ip>:<port>

其中,<token> 是在上一步生成的加入令牌,<manager-ip> 是 Swarm 管理节点的 IP 地址,<port> 是 Swarm 管理节点的监听端口(默认为 2377)。

  1. 验证节点是否成功加入集群:在 Swarm 管理节点上,执行以下命令来列出集群中的所有节点:
docker node ls
  1. 打开通信端口:确保swarm通信服务所需要端口是可用的

以ubuntu为例

#安装防火墙
#sudo apt update
#sudo apt install ufw

#启用防火墙
#sudo ufw enable

#允许特定端口
sudo ufw allow <port_number>

#拒绝特定端口
sudo ufw deny <port_number>

#拒绝/允许特定协议和端口号
sudo ufw allow <port_number>/<protocol>

#查看当前规则
sudo ufw status

Swarm 管理节点:
TCP 端口 2377:用于集群管理通信。
TCP 和 UDP 端口 7946:用于节点之间的通信。
UDP 端口 4789:用于 Overlay 网络通信。
2. 集群网络创建
  1. 创建网络:集群中节点通信需要创建overlay网络
docker network create --driver overlay --attachable my_network
  1. 检查网络:检查网络是否创建成功,一般在管理节点(初始化swarm网络的主机)上可以通过一下命令查看到网络信息,worker节点看不到创建的overlay网络信息,据说是要worker节点中使用这个网络,才能看到
docker network ls
  1. 服务连接到网络: 将需要跨宿主机通信的服务连接到网络
docker service create --name my_service --network my_network image_name

#其实也可以
docker run -it -d --name <docker_name> --net=my_network <images_name>
  1. 查看容器中的网络配置 :查看容器中网络配置
docker inspect <docker_name>
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值