上一節咱們討論了 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 網絡,下一節咱們將詳細討論。