Docker如何实现网络通讯


这篇文章主要介绍“Docker如何实现网络通讯”,在日常操作中,相信很多人在Docker如何实现网络通讯问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker如何实现网络通讯”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!概述就目前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”编辑主机2上的 /etc/docker/daemon.json 文件,添加内容:”bip” : “ip/netmask”• 2. 重启docker服务主机1和主机2上均执行如下命令重启docker服务以使修改后的docker0网段生效• 3. 添加路由规则主机1上添加路由规则如下:主机2上添加路由规则如下:• 4. 配置iptables规则主机1上添加如下规则:主机2上添加如下规则:• 5. 启动容器主机1上启动centos容器:主机2上启动centos容器:• 分别在两台机器上安装ifconfig免费云主机域名,并查看容器的ip,命令是:主机1上的容器ip地址:
主机2上的容器ip:• 6. 容器间直接通信好了,现在两容器可以互ping了主机1上ping:主机2上ping:到此,关于“Docker如何实现网络通讯”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: 怎么配合ffmpeg接口获取视频音频媒体信息

今天小编给大家分享一下怎么配合ffmpeg接口获取视频音频媒体信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。做音视频开发过程中,经常需要获取…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/20 19:14
Next 07/20 19:14

相关推荐