百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> Docker容器间通信直接路由方式实现网络通信
分享文章到:

Docker容器间通信直接路由方式实现网络通信

发布时间:05/13 来源:未知 浏览: 关键词:

概述

就当前Docker本身默许的网络来说,单台主机上的不一样Docker容器可以借助docker0网桥直接通讯,这没毛病,而不一样主机上的Docker容器之间只能通过在主机上用映射端口的要领来进行通讯,有时这种方式会很不利便,甚至达不到我们的要求,因而位于不一样物理机上的Docker容器之间直接运用自身的IP地址进行通讯很有须要。再者说,要是将Docker容器起在不一样的物理主机上,我们不可以免的会遭碰到Docker容器的跨主机通讯题目。本文就来尝试一下。

此时两台主机上的Docker容器怎样直接通过IP地址进行通讯?

一种直接想到的方案便是通过离别在各自主机中 增加路由 来实现两个centos容器之间的直接通讯。

方案道理剖析

因为运用容器的IP进行路由,就需要以免不一样主机上的容器运用了雷同的IP,为此我们应当为不一样的主机分配不一样的子网来保证。于是我们结构一下两个容器之间通讯的路由方案,如下图所示。

各项配置如下:

• 主机1的IP地址为:192.168.18.162
• 主机2的IP地址为:192.168.18.141
• 为主机1上的Docker容器分配的子网:192.168.100.0/24
• 为主机2上的Docker容器分配的子网:192.168.200.0/24

这样配置之后,两个主机上的Docker容器就确定不会运用雷同的IP地址从而以免了IP冲突。

我们接下来 定义两条路由法则 即可:

• 所有目的地址为192.168.100.0/24的包都被转发到主机1上
• 所有目的地址为192.168.200.0/24的包都被转发到主机2上

综上所述,数据包在两个容器间的通报历程如下:

• 从container1 发往 container2 的数据包,首先发往container1的“网关”docker0,然后通过查找主机1的路由得知需要将数据包发给主机2,数据包抵达主机2后再转发给主机2的docker0,最后由其将数据包转到container2中;反向道理雷同,不再赘述。

我们心里方案想的是这样,接下来实践一下看看是否可行。

现实试验

• 1. 离别对主机1和主机2上的docker0进行配置

编辑主机1上的 /etc/docker/daemon.json 文件,增加内容:”bip” : “ip/netmask”

{ "bip":"192.168.100.252/24" }

编辑主机2上的 /etc/docker/daemon.json 文件,增加内容:”bip” : “ip/netmask”

{ "bip":"192.168.200.252/24" }

• 2. 重启docker服务

主机1和主机2上均施行如下下令重启docker服务以使修改后的docker0网段生效

systemctl restart docker

• 3. 增加路由法则

主机1上增加路由法则如下:

route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.18.141

主机2上增加路由法则如下:

route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.18.162

• 4. 配置iptables法则

主机1上增加如下法则:

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 ! -d 192.168.0.0/16 -j MASQUERADE

主机2上增加如下法则:

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 ! -d 192.168.0.0/16 -j MASQUERADE

• 5. 启动容器

主机1上启动centos容器:

docker run -it --name container1 centos /bin/bash

主机2上启动centos容器:

docker run -it --name container2 centos /bin/bash

• 离别在两台机器上安装ifconfig,并查看容器的ip,下令是:

[root@695ba390d221 /]# yum search ifconfig
[root@695ba390d221 /]# yum install net-tools.x86_64

主机1上的容器ip地址:


主机2上的容器ip:

• 6. 容器间直接通讯

好了,此刻两容器可以互ping了

主机1上ping:

主机2上ping:

总结

以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者工作拥有一定的参考学习价值,感谢大家对脚本之家的支撑。要是你想理解更多相干内容请查看下面相干链接

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有155人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板