docker 里使用的最广泛的其实是bridge网络,Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定–network,创建的容器默认都会挂到 docker0 上。
当前 docker0 上没有任何其他网络设备,我们创建一个容器看看有什么变化。
一个新的网络接口 veth28c57d 被挂到了 docker0 上,veth28c57d就是新创建容器的虚拟网卡。
容器有一个网卡 eth0@if17。大家可能会问了,为什么不是veth28c57d 呢?
实际上 eth0@if17 和 veth28c57d 是一对 veth pair。veth pair 是一种成对出现的特殊网络设备,可以把它们想象成由一根虚拟网线连接起来的一对网卡,网卡的一头(eth0@if17)在容器中,另一头(veth28c57d)挂在网桥 docker0 上,其效果就是将 if17 也挂在了 docker0 上。
我们还看到 eth0@if17 已经配置了 IP 172.17.0.2,为什么是这个网段呢?让我们通过 docker network inspect bridge 看一下 bridge 网络的配置信息:
原来 bridge 网络配置的 subnet 就是 172.17.0.0/16,并且网关是 172.17.0.1。这个网关在哪儿呢?其实就对应着docker0
|
|
当前容器网络拓扑结构如图所示:
转自: bridge网络