计算机系统应用教程网站

网站首页 > 技术文章 正文

Docker Overlay 网络学习 dockercompose 网络

btikc 2024-10-14 08:47:40 技术文章 7 ℃ 0 评论

1.Docker的网络模式参考:https://docs.docker.com/engine/userguide/networking/

说明一下,Docker里提到的bridge模式不同于VM中的bridge,应该与VM中的NAT类似。

2.Swarm创建Overlay Network

参考:https://docs.docker.com/engine/swarm/networking/

* 搭建虚机

因为Overlay需要多主机,这里在一台服务器内建立2个虚机Docker-1和Docker-2和2个Linux bridge br-external和br-docker,br-external占用物理服务器的eth0接口。Docker-1、Docker-2、br-docker和br-external的连接如上图所示。Docker-1和Docker-2的OS使用Ubuntu 16.04.3。

* 安装Docker

参考:https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

分别在Docker-1和Docker-2上,安装Docker。

*建立Swarm集群

参考:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/

参考:https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/

先在Docker-1上初始化Swarm。

将Docker-2以Manager身份加入到集群中,这里Docker-1和Docker-2都是Manager。Docker-2也可以以Worker身份加入集群。

集群建立后,在Docker-1和Docker-2上都可以看到2个node。

*创建Overlay Network

参考:https://docs.docker.com/engine/swarm/networking/

在Docker-1上创建1个Overlay的网络net1。

在Docker-2上同时可以看到网络net1。

* 建立Container

可以用如上命令在Docker-1和Docker-2上建立Container。

* Overlay网络的研究

这里另外创建1个Container。

在Docker-2上创建1个以tomcat为基础的Container, net1-c5-web。

进入net1-c5-web后,可以看到有2块网卡,eth0(10.0.0.7)和eth1(172.18.0.5)。

可以看到对外访问的缺省路由是eth1,网关是172.18.0.1。

在Docker-2上,可以看到172.18.0.1的网卡docker-gwbridge。

可以看到Container访问外网时,是经过docker-gwbridge,docker-gwbridge是bridge(相当于VM中的NAT模式,SNAT)。

关于docker-gwbridge,可参考:https://docs.docker.com/engine/swarm/networking/

在Container里还有10.0.0.7的网卡,这个应该是Overylay网络,Container之间的通信使用。

在net1-c5-web上ping在Docker-1上的另一个Container net1-c1的eth0网卡10.0.0.4,可以ping通。

在net1-c1上通过tcpdump可以看到ICMP数据包。

在物理服务器内的br-docker网桥上抓包。

可以看到,net1-c5-web(10.0.0.7)ping net1-c1(10.0.0.4)的是通过VxLAN。

Docker-1和Docker-2上的关于VxLAN的解封装点在哪里呢?进入namespace看看……

在Docker-1中可以到有这些的namespace。

这里就可以看到br0(10.0.0.1)和vxlan,以及对接在Docker-1上的3个Container的veth0、veth1、veth2。

抓取br0、veth0和vxlan0,都可以看到ICMP包,有一点区别是veth0和vxlan0是有IP Fragment。

通过以上的练习,可以大致知道Docker Overlay网络的架构如下:

3.Docker Overlay网络应用的监测

构造2个Container,在c1上安装web服务,用c3访问c1的web服务,在c1、c3以及br-docker上安装虚拟探针,用于分析使用。

在分析平台上,可以看到以下结果:

br-docker监测点上的应用及流量分布(VNI=4097)。

3个监测点(c1、c2和br-docker)的HTTP应用性能指标,可对比分析。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表