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

在 host2 中运行容器 bbox2:

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

可见 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 网络的 namespace 可以在 host1 和 host2 上执行 ip netns(请确保在此之前执行过 ln -s /var/run/docker/netns /var/run/netns),可以看到两个 host 上有一个相同的 namespace “1-3e14e93b3e”:

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

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

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

最新文章

  1. SQL隐式装换消耗过高CPU
  2. Java NIO 网络编程基础
  3. js对Date对象的操作的问题(生成一个倒数7天的数组)
  4. Spring Boot 所提供的配置优先级顺序
  5. js获取非行间样式/定义样式
  6. 使用EA逆向生成数据库E-R图
  7. NopCommerce架构分析之八------多语言
  8. JSOI2009 游戏
  9. 初学jQuery之jQuery选择器
  10. 跟着刚哥梳理java知识点——数组(七)
  11. hdu_1014(竟然真的还有更水的)
  12. JS对全角与半角的验证,相互转化以及介绍
  13. PAT (Basic Level) Practice 1001 害死人不偿命的(3n+1)猜想
  14. UVa - 10341
  15. C#_父窗体跟子窗体的控件操作
  16. hibernate4.3 无法获取数据库最新值
  17. 关于 android 返回键 代码实现
  18. FMX ScrollBox 拖拽控制
  19. Pg188-3 构造方法
  20. 利用xpath来解析douban电影相对应的信息

热门文章

  1. SmartSVN提示 svn: File has inconsistent newlines 解决
  2. 数据挖掘算法(一)--K近邻算法 (KNN)
  3. Java修炼——插入排列,选择排列
  4. 牛客剑指offer(持续更新~)
  5. Python 电路绘制库 schemdraw 你会吗?【面试必学】
  6. tensorflow sequence_loss
  7. CSS3(2)--- 过渡(transition)
  8. docker安装与配置
  9. python之MiniWeb框架
  10. php5.4.16执行shell脚本