1. 程式人生 > >學容器必須懂 bridge 網絡 - 每天5分鐘玩轉 Docker 容器技術(32)

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

docker 教程 容器

上一節我們討論了 none 和 host 類型的容器網絡,本節學習應用最廣泛也是默認的 bridge 網絡。

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

技術分享

當前 docker0 上沒有任何其他網絡設備,我們創建一個容器看看有什麽變化。

技術分享

一個新的網絡接口 veth28c57df 被掛到了 docker0

上,veth28c57df就是新創建容器的虛擬網卡。

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

技術分享

容器有一個網卡 [email protected]

/* */。大家可能會問了,為什麽不是veth28c57df 呢?

實際上 [email protected]veth28c57df 是一對 veth pair。veth pair 是一種成對出現的特殊網絡設備,可以把它們想象成由一根虛擬網線連接起來的一對網卡,網卡的一頭([email protected])在容器中,另一頭(veth28c57df)掛在網橋 docker0 上,其效果就是將 [email protected] 也掛在了 docker0 上。

我們還看到 [email protected] 已經配置了 IP 172.17.0.2,為什麽是這個網段呢?讓我們通過 docker network inspect bridge 看一下 bridge 網絡的配置信息:

技術分享

原來 bridge 網絡配置的 subnet 就是 172.17.0.0/16,並且網關是 172.17.0.1。這個網關在哪兒呢?大概你已經猜出來了,就是 docker0。

技術分享

當前容器網絡拓撲結構如圖所示:

技術分享

容器創建時,docker 會自動從 172.17.0.0/16 中分配一個 IP,這裏 16 位的掩碼保證有足夠多的 IP 可以供容器使用。

除了 none, host, bridge 這三個自動創建的網絡,用戶也可以根據業務需要創建 user-defined 網絡,下一節我們將詳細討論。

技術分享

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