docker容器间网络通信

来源:互联网 发布:20世纪90年代网络繁荣 编辑:程序博客网 时间:2024/05/29 14:50

我们都知道,同主机同网络下的容器可以通过容器的网桥来进行通信,但是不同网络的容器不能通信。原因是什么呢?
参考 http://blog.csdn.net/CloudMan6/article/details/73825691 这个帖子,我自己做了实验,记录一下

查看主机ip转发是否开启 sysctl net.ipv4.ip_forward。既然已经开启,且各个网桥都连接在主机上,为什么不能ping通 ?
我们看一下ip 的设置
这里写图片描述

可以看到
172.17.0.0/16 对应docker0
172.22.16.0/24 对应 br-31420d31f051

查看iptables的设置
这里写图片描述

发现iptables会把docker0和br-31420d31f051两个网段的流量drop掉,所以两个网段无法通信。

一般我们可以通过为容器配置网卡的方式把容器加入另一个网段,这样就可以互相通信。
执行docker network connect network_name containerID

这里写图片描述

此时进入容器,发现容器有两个虚拟网卡,即对应两个ip地址
这里写图片描述

此时容器ping通

盗图一张,来自http://blog.csdn.net/CloudMan6/article/details/73825691 这个帖子
这里写图片描述

原创粉丝点击