4周前 (07-23) CloudMan6  每天5分钟Docker
文章评分 0 次,平均分 0.0

上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理。

在 host2 中运行容器 bbox2:

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

bbox2 IP 为 10.0.0.3,可以直接 ping bbox1:

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务。

下面我们讨论一下 overlay 网络的具体实现:

docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上。

br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的。逻辑网络拓扑结构如图所示:

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

要查看 overlay 网络的 namespace 可以在 host1 和 host2 上执行 ip netns(请确保在此之前执行过 ln -s /var/run/docker/netns /var/run/netns),可以看到两个 host 上有一个相同的 namespace “1-f4af9b33c0”:

ip netns
......
1-f4af9b33c0
......


这就是 ov_net1 的 namespace,查看 namespace 中的 br0 上的设备。

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

查看 vxlan1 设备的具体配置信息可知此 overlay 使用的 VNI(VxLAN ID)为 256。

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

理解了 overlay 网络的连通性,下一节我们继续讨论 overlay 的网络隔离特性。




//下面这个css和插件后台设置的主题有关系,如果需要换样式,则需要修改以下CSS名称

 

除特别注明外,本站所有文章均为铁匠运维网原创,转载请注明出处来自http://www.tiejiang.org/24287.html

关于

发表评论

暂无评论

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

扫一扫二维码分享