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 |