標籤:

docker的網路基礎

1、docker0網橋

安裝好docker以後,使用ifconfg查詢網路時會出現,如下:

docker0,即為docker網橋,容器與外界的網路通信,其數據的傳遞則是走docker0.

eth0,主機自己的網卡;

lo,則是迴環網路;

在docker正常工作的情況下,默認使用的網路模式就是「網橋模式」;

2、網路模式

說到docker的網路模式,概括起來就是四種:

  • bridge模式

在commond命令中,使用--net=bridge指定,本質上就是所有創建的容器通過docker0進行通信並且建立連接。

docker初始化容器的步驟:

(1)創建一個虛擬網卡(veth pair)

(2)為創建的虛擬網卡命名並綁定到docker0網橋上

(3)將docker0與eth0進行綁定

(4)docker0從eth0上獲取子網IP

這是最為常規的模式,可以滿足docker工作的基本需求。

  • host模式

使用--net=host設置,首先docker server將不會為docker容器創建網路協議棧,即:不會創建獨立的network namespace,主要是與宿主機共用同一個網路環境,這樣做的好處是不用像bridge模式那樣需要做網路地址的轉換,它將是直接與外界的網路相連,減少網路地址佔用帶來的衝突。

  • container模式

使用--net=container設置,與host模式比較相似,區別在於容器的網路共享方式不是host(宿主機),而是其他的容器內的網路模式,也即:與其他容器模式依賴。

這樣的好處是如果部署一個應用,可以將應用的不同組件部署在不同的容器中,對外可以看上出是一個整體。

  • none模式

docker容器擁有自己的network namespace,自己使用自己的網路環境,這樣可以自定義網路環境。


推薦閱讀:

如何評價docker?
現在國內、國際市場上有哪些docker的容器管理平台?
什麼是docker鏡像?
Egg.js+Antd 擼個簡易版阿里雲CS控制台?
如何提升Docker for Mac性能

TAG:Docker |