如何理解Docker容器之间的连通性,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今天我们将讨论这几个容器之间的连通性。两个 busybox 容器都挂在 my_net2 上,应该能够互通,我们验证一下可见同一网络中的容器、网关之间都是可以通信的。my_net2
与默认 bridge 网络能通信吗?从拓扑图可知,两个网络属于不同的网桥,应该不能通信,我们通过实验验证一下,让 busybox 容器 ping httpd 容器。确实 ping 不通,符合预期。“等等!不同的网络如果加上路由应该就可以通信了吧?”我已经听到有读者在建议了。这是一个非常非常好的想法。确实,如果 host 上对每个网络的都有一条路由,同时操作系统上打开了 ip forwarding,host 就成了一个路由器,挂接在不同网桥上的网络就能够相互通信。下面我们来看看 docker host 满不满足这些条开发云主机域名件呢?ip r
查看 host 上的路由表:# ip r……172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1172.22.16.0/24 dev br-5d863e9f78b6 proto kernel scope link src 172.22.16.1……
172.17.0.0/16 和 172.22.16.0/24 两个网络的路由都定义好了。再看看 ip forwarding:# sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1
ip forwarding 也已经启用了。条件都满足,为什么不能通行呢?我们还得看看 iptables:# iptables-save……-A DOCKER-ISOLATION -i br-5d863e9f78b6 -o docker0 -j DROP-A DOCKER-ISOLATION -i docker0 -o br-5d863e9f78b6 -j DROP……
原因就在这里了:iptables DROP 掉了网桥 docker0 与 br-5d863e9f78b6 之间双向的流量。从规则的命名DOCKER-ISOLATION
可知 docker 在设计上就是要隔离不同的 netwrok。那么接下来的问题是:怎样才能让 busybox 与 httpd 通信呢?答案是:为 httpd 容器添加一块 net_my2 的网卡。这个可以通过docker network connect
命令实现。
我们在 httpd 容器中查看一下网络配置容器中增加了一个网卡 eth2,分配了 my_net2 的 IP 172.22.16.3。现在 busybox 应该能够访问 httpd 了,验证一下。busybox 能够 ping 到 httpd,并且可以访问 httpd 的 web 服务。关于如何理解Docker容器之间的连通性问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。
三层交换技术——实现VLAN间通信,解决单臂路由中继链路的瓶颈 理解了单臂路由的原理,我们会发现单臂路由是不具有扩展性的,为什么这么说呢,如果VLAN 的数量不断增加,流经路由器与交换机之间链路的流量也变得非常大,这时,这条链路也就成为了整个网络的瓶颈,即使…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。