Docker学习总结(21)——Docke网络bridge详解

来源:互联网 发布:李乐的霍去病 知乎 编辑:程序博客网 时间:2024/06/06 18:40

Docker 安装时会创建一个 命名为 docker0的 linux bridge。如果不指定--network,创建的容器默认都会挂到docker0上。

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

当前 docker0 上没有任何其他网络设备,我们创建一个容器看看有什么变化。

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

一个新的网络接口 veth28c57df被挂到了docker0上,veth28c57df就是新创建容器的虚拟网卡。

下面看一下容器的网络配置。

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

容器有一个网卡 eth0@if34。大家可能会问了,为什么不是veth28c57df呢?

实际上 eth0@if34和veth28c57df是一对 veth pair。veth pair 是一种成对出现的特殊网络设备,可以把它们想象成由一根虚拟网线连接起来的一对网卡,网卡的一头(eth0@if34)在容器中,另一头(veth28c57df)挂在网桥docker0上,其效果就是将eth0@if34也挂在了docker0上。

我们还看到 eth0@if34已经配置了 IP172.17.0.2,为什么是这个网段呢?让我们通过docker network inspect bridge看一下 bridge 网络的配置信息:

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

原来 bridge 网络配置的 subnet 就是 172.17.0.0/16,并且网关是 172.17.0.1。这个网关在哪儿呢?大概你已经猜出来了,就是 docker0。

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

当前容器网络拓扑结构如图所示:

学容器必须懂 bridge 网络-每天5分钟玩转 Docker 容器技术(32)

容器创建时,docker 会自动从 172.17.0.0/16 中分配一个 IP,这里 16 位的掩码保证有足够多的 IP 可以供容器使用。

除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络

原创粉丝点击