如何实现 Docker 容器 的跨主机通讯?

一、理论:Docker 如何实现跨主机网络?

1、认识 Docker Overlay

Overlay 网络是为特定目的在物理(底层)网络之上创建的逻辑网络。Docker 可以创建容器之间的 Overlay 网络,从而实现跨主机的容器之间的沟通

也就是说,只要几台物理机之间本身是可以通信的,那么只要在这些机器上建立好一个 Overlay 网络把需要相互通讯的容器,直接部署在这个网络之上,最终的效果就类似于将这些容器部署在同一台物理机一样,进行任意通信

比如说我们需要实现一个 Elasticsearch 集群,那么我们只需要把各个节点部署在预先创建好的一个 Overlay 网络上就可以实现通信啦

2、稍微具体一点

你可能还会有疑惑,为什么 Overlay 网络就可以实现多台物理机之间的网络互通呢?实际上它是在 Docker 集群节点间的加入了一层虚拟网络,它有独立的虚拟网段。Docker 容器发送的请求,会先发送到虚拟子网,再由虚拟子网包装为宿主机的真实网址进行发送

3、Swarm 是什么?

而今天要介绍的 Docker Swarm,则是 Docker Overlay 网络的一种简易实现方式,它是 Docker 开发的容器集群管理工具, 与 Docker API 兼容性很好

并且 Linux 中安装了 Docker,也默认会安装 Swarm。 因此,在这里,我们采用 Swarm 实现 集群间的网络通信

接下来,让我们通过实战真正了解一下使用Docker Swarm 如何实现Docker 容器的跨主机通信吧

二、实战一:实现集群之间的通信

还是拿那个老例子来讲一下

在文章Docker篇(五):容器之间该如何通讯?中,我们分别将 Spring Boot 后端程序 druid_demomariadb 分别运行在不同容器中,成功实现了他们之间的通讯

那么,接下来,我们将他们分别部署在两台机器上

机器配置如下:

序号 节点角色 ip地址 容器名称

说明:使用 Swarm 建立跨主机的网络,实际上总共分为如下几步:

  1. manager 创建一个 Swarm 集群

  2. 将其他集群分别加进来

  3. manager 创建一个 Overlay 网络

  4. 启动各个容器时,指定这个 Overlay 网络

具体,往下看

1、在 manager 节点创建 Swarm 集群

执行命令:

docker swarm init --advertise-addr=10.10.10.100

效果如下:

docker swarm init --advertise-addr=10.10.10.100
​
[root@localhost ~]# docker swarm init --advertise-addr=10.10.10.100
Swarm initialized: current node (maw28ll7mlxuwp47z5c5vo2v1) is now a manager.
 
 
To add a worker to this swarm, run the following command:
 
docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 10.10.10.100:2377
 
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

显示了 worker节点加入到该集群的命令,只需要执行

docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 10.10.10.100:2377

即可

2、在 worker 节点上执行命令,将自己加入集群

docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 10.10.10.100:2377

3、在 manager 节点,查看当前网络集群的节点情况

执行 docker node ls

4、在 manager 节点,创建 overlay 网络

docker network create -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值