理解容器之间的连通性 - 每天5分钟玩转 Docker 容器技术(34)

通过前面小节的实践,当前 docker host 的网络拓扑结构如下图所示,今天我们将讨论这几个容器之间的连通性。

163.png

两个 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.1

172.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_forward

net.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 容器中查看一下网络配置:

容器中增加了一个网卡 eth1,分配了 my_net2 的 IP 172.22.16.3。现在 busybox 应该能够访问 httpd 了,验证一下:

busybox 能够 ping 到 httpd,并且可以访问 httpd 的 web 服务。当前网络结构如图所示:

下一节我们讨论容器间通信的三种方式

二维码+指纹.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker容器技术是一种轻量级的虚拟化技术,可以快速搭建和部署应用程序。每天花5分钟玩转Docker容器技术,可以充分利用碎片化的时间,提高工作和学习效率。 首先,我们需要了解Docker容器技术的基本概念和原理。可以每天读取Docker容器的相关书籍或者阅读官方文档,逐步掌握其中的关键概念和技术细节。 接下来,在学习过程中,可以每天尝试使用Docker命令行工具来进行实践。比如,运行一个简单的Hello World容器,下载一个Docker镜像并在容器中运行一个简单的应用程序等。通过实际操作,可以更好地理解Docker容器技术的工作原理。 此外,深入学习Docker容器技术的最好方式之一是参与项目实战。可以每天尝试运行一些具有挑战性的容器化项目,比如部署一个多容器的Web应用程序,搭建一个容器化的开发环境等。通过实际的项目实践,可以更加深入地掌握和应用Docker容器技术。 另外,要善于利用网络资源,比如每天浏览相关的Docker容器技术博客、论坛或者社区,了解最新的技术发展和应用案例。可以关注Docker官方博客或者加入Docker用户社区,与其他Docker技术爱好者交流学习经验。 最后,坚持每天花5分钟玩转Docker容器技术,持之以恒。通过每天的实践和学习,逐渐提升自己的技术能力,深入理解和运用Docker容器技术,为个人的工作和学习带来便利和提升。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值