1. 程式人生 > >Docker學習總結(21)——Docke網路bridge詳解

Docker學習總結(21)——Docke網路bridge詳解

Docker 安裝時會建立一個 命名為 docker0的 linux bridge。如果不指定--network,建立的容器預設都會掛到docker0上。

學容器必須懂 bridge 網路-每天5分鐘玩轉 Docker 容器技術(32)

當前 docker0 上沒有任何其他網路裝置,我們建立一個容器看看有什麼變化。

學容器必須懂 bridge 網路-每天5分鐘玩轉 Docker 容器技術(32)

一個新的網路介面 veth28c57df被掛到了docker0上,veth28c57df就是新建立容器的虛擬網絡卡。

下面看一下容器的網路配置。

學容器必須懂 bridge 網路-每天5分鐘玩轉 Docker 容器技術(32)

容器有一個網絡卡 [email protected]。大家可能會問了,為什麼不是veth28c57df呢?

實際上 [email protected]和veth28c57df是一對 veth pair。veth pair 是一種成對出現的特殊網路裝置,可以把它們想象成由一根虛擬網線連線起來的一對網絡卡,網絡卡的一頭(

[email protected])在容器中,另一頭(veth28c57df)掛在網橋docker0上,其效果就是將[email protected]也掛在了docker0上。

我們還看到 [email protected]已經配置了 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 網路