1 / 12
文档名称:

Docker网络原理分析.doc

格式:doc   大小:309KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Docker网络原理分析.doc

上传人:知识海洋 2022/1/3 文件大小:309 KB

下载得到文件列表

Docker网络原理分析.doc

文档介绍

文档介绍:Docker 网络原理分析
Docker 使用 linux 的 bridge 和 veth 虚拟网络设备,以及 network
namespace对网络进行虚拟化。 Bridge 看其名字是网桥, 但实际上它
的功能和交换机 (switch) 相似。Veth 则是一对网络接口, 像是用一条
网线连接起来的两块网卡。阅读这篇文章前,应该先了解 linux 的
bridge 和 veth 的原理和用法,熟悉 brctl, ip, iptables 三个重要
命令的使用方法。
一、 Docker 经典网络架构:
从上图可知,每个 docker 容器通过一对 veth 连入 bridge br0 。Veth的一端在 docker netns 中,通常改名为 eth0 ;另一端在 default 或 global netns 中,通常命名为 vethXXXXXXXX。上图中将其命名为
vnic11 和 vnic21 。
Bridge br0 自带一个网络接口, 相当于主机的一张网卡, 它的名字也
叫 br0 。上图相当于一个 bridge br0 连接了三台机器:host ,docker1 ,
docker2 ,它们形成了一个独立的 LAN。而主机的 eth0 则将主机连接
到外部的交换机,和交换上的其它主机形成一个

LAN。
现在配置网络的

IP :
Host

的 eth0 :将主机连接到外部交换机。

Ip=,


机的网关为

dev eth0


Host



br0

网络接口

:

将主机连接到内部交换机

br0



。注意,当同时为主机的

eth0



br0

设置

IP

时,它
俩不能处于同一网段。
Docker1 的 eth0: 将 docker1 连接到交换机 br0 。 。
Docker1 网关为 。
Docker2 的 eth0: 将 docker2 连接到交换机 br0 。 。
Docker2 网关为 。
这样 docker1,docker2 以及 host 所形成的 LAN就配置好了,它的网
段为 。现在, docker1 、docker2 以及主机,这三台设备
可以正常通信了。
那么, docker1 和 docker2 如何才能访问 host 以外的世界呢?答案
是 NAT。也就是需要配置转发机制, 在网络接口 host:br0 和 host:eth0
之间转发数据包。配置转发机制首先要开启 linux 的网络转发功能,
然后要在 iptables 中配置 SNAT源地址转换。
上面就是 docker 默认使用的网络模式 (--net=bridge) 。 Docker daemon一启动,就会创建 bridge ,不过名字叫做 docker0 。并将网
口 docker0 的 IP 配成了。以后每启动一个容器,就自动为该容器创建 veth pair ,将一端连到 bridge docker0 ,将另一端放入容器 内,改名 为 eth0 。 容器内的 eth0 的 ip 配置 为
,容器的网关配置为 。
下面,我们用命令一步一步创建该网络,以加深对 docker 网络原理
的理解。
启动两个 docker 容器,不要让 docker 自动配置网络 docker run –itd --name=docker1 --net=none test/ubuntu:14 /bin/bash
docker run –itd --name=docker2 --net=none test/ubuntu:14
/bin/bash
2. 找到容器的 netns ,将其连接到 /var/run/netns/ 下,以便为其配
置网卡。
先找到 docker 容器的