上一節(jié)我們討論了 none 和 host 類型的容器網(wǎng)絡(luò),本節(jié)學(xué)習(xí)應(yīng)用最廣泛也是默認(rèn)的 bridge 網(wǎng)絡(luò)。

Docker 安裝時(shí)會(huì)創(chuàng)建一個(gè) 命名為 docker0 的 linux bridge。如果不指定--network,創(chuàng)建的容器默認(rèn)都會(huì)掛到 docker0 上。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

當(dāng)前 docker0 上沒(méi)有任何其他網(wǎng)絡(luò)設(shè)備,我們創(chuàng)建一個(gè)容器看看有什么變化。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

一個(gè)新的網(wǎng)絡(luò)接口 veth28c57df 被掛到了 docker0 上,veth28c57df就是新創(chuàng)建容器的虛擬網(wǎng)卡。

下面看一下容器的網(wǎng)絡(luò)配置。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

容器有一個(gè)網(wǎng)卡 eth0@if34。大家可能會(huì)問(wèn)了,為什么不是veth28c57df 呢?

實(shí)際上 eth0@if34 和 veth28c57df 是一對(duì) veth pair。veth pair 是一種成對(duì)出現(xiàn)的特殊網(wǎng)絡(luò)設(shè)備,可以把它們想象成由一根虛擬網(wǎng)線連接起來(lái)的一對(duì)網(wǎng)卡,網(wǎng)卡的一頭(eth0@if34)在容器中,另一頭(veth28c57df)掛在網(wǎng)橋 docker0 上,其效果就是將 eth0@if34 也掛在了 docker0 上。

我們還看到 eth0@if34 已經(jīng)配置了 IP 172.17.0.2,為什么是這個(gè)網(wǎng)段呢?讓我們通過(guò) docker network inspect bridge 看一下 bridge 網(wǎng)絡(luò)的配置信息:

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

原來(lái) bridge 網(wǎng)絡(luò)配置的 subnet 就是 172.17.0.0/16,并且網(wǎng)關(guān)是 172.17.0.1。這個(gè)網(wǎng)關(guān)在哪兒呢?大概你已經(jīng)猜出來(lái)了,就是 docker0。

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

當(dāng)前容器網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖所示:

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫培訓(xùn)

容器創(chuàng)建時(shí),docker 會(huì)自動(dòng)從 172.17.0.0/16 中分配一個(gè) IP,這里 16 位的掩碼保證有足夠多的 IP 可以供容器使用。

除了 none, host, bridge 這三個(gè)自動(dòng)創(chuàng)建的網(wǎng)絡(luò),用戶也可以根據(jù)業(yè)務(wù)需要?jiǎng)?chuàng)建 user-defined 網(wǎng)絡(luò),下一節(jié)我們將詳細(xì)討論。

http://www.cnblogs.com/CloudMan6/p/7066851.html