上一节咱们讨论了 none 和 host 类型的容器网络,本节学习应用最普遍也是默认的 bridge 网络。linux
Docker 安装时会建立一个 命名为 docker0
的 linux bridge。若是不指定--network
,建立的容器默认都会挂到 docker0
上。docker
当前 docker0 上没有任何其余网络设备,咱们建立一个容器看看有什么变化。网络
一个新的网络接口 veth28c57df
被挂到了 docker0
上,veth28c57df
就是新建立容器的虚拟网卡。学习
下面看一下容器的网络配置。code
容器有一个网卡 eth0@if34
。你们可能会问了,为何不是veth28c57df
呢?接口
实际上 eth0@if34
和 veth28c57df
是一对 veth pair。veth pair 是一种成对出现的特殊网络设备,能够把它们想象成由一根虚拟网线链接起来的一对网卡,网卡的一头(eth0@if34
)在容器中,另外一头(veth28c57df
)挂在网桥 docker0
上,其效果就是将 eth0@if34
也挂在了 docker0
上。容器
咱们还看到 eth0@if34
已经配置了 IP 172.17.0.2
,为何是这个网段呢?让咱们经过 docker network inspect bridge
看一下 bridge 网络的配置信息:配置
原来 bridge 网络配置的 subnet 就是 172.17.0.0/16,而且网关是 172.17.0.1。这个网关在哪儿呢?大概你已经猜出来了,就是 docker0。network
当前容器网络拓扑结构如图所示:二维码
容器建立时,docker 会自动从 172.17.0.0/16 中分配一个 IP,这里 16 位的掩码保证有足够多的 IP 能够供容器使用。
除了 none, host, bridge 这三个自动建立的网络,用户也能够根据业务须要建立 user-defined 网络,下一节咱们将详细讨论。