1. 程式人生 > 其它 >【docker】4種網路模式

【docker】4種網路模式

bridge模式

使用--net=bridge指定,Docker的預設設定,這種模式創建出來的docker容器連結到Dcoker網橋上(docker0網橋或者其它自定義的網橋):
1)建立一對虛擬網絡卡(veth pair)
2)賦予其中一塊網絡卡一個類似“veth65f9”的名字,將其留在宿主機root network namespace中,並繫結到Docker網橋上
3)將另一塊網絡卡放入新建立的network namespace中(docker容器中),命名為eth0
4)從Docker網橋的子網中選取一個未使用的IP非配給eth0,併為Docker容器設定預設路由,預設閘道器為Docker網橋

此模式與外界通訊使用NAT協議,增加了通訊的複雜性,在複雜場景下使用會有諸多限制。

host模式

使用--net=host指定。Docker容器中的程序處於宿主機的網路環境中,相當於docker容器和宿主機公用一個network namespace,使用宿主機的網絡卡、IP、埠等資訊。但是容器其它方面,如檔案系統、程序列表等還是和宿主機隔離的。
host模式很好地解決了容器與外界通訊的地址轉換問題,可以直接使用宿主機的IP進行通訊,但是也降低了隔離性,同事還會引起網路資源的競爭和衝突。

container模式

container模式和host模式類似,指定新建立的容器和已經存在的某個容器共享同一個network namespace。都是共享network namespace,區別就在於host模式與宿主機共享,而container模式與某個存在的容器共享。新建立的容器不會建立自己的網絡卡,也不配置IP,而是與一個指定的容器共享IP、埠範圍等。同樣,兩個容器除了網路方面,其它的如檔案系統、程序列表等還是隔離的。
在這種模式下,兩個容器的程序可以通過lo迴環網絡卡裝置通訊,增加了容器間通訊的便利性和效率。
container模式的應用場景就在於可以將一個應用的多格元件放在不同的容器中,這些容器配置為container模式的網路,這樣他們就可以作為一個整體對外提供服務。同樣,這種模式也降低了容器間的隔離性

none模式

這種模式下,docker容器擁有自己的network namespace,但是,並不為docker容器進行任何網路配置。也就是說,這個docker容器除了netwokr namespace自帶的loopback網絡卡外沒有其他任何網絡卡、IP、路由等資訊,需要使用者為Docker容器新增網絡卡、配置IP等。
這種模式如果不進行特定的配置是無法正常使用的,但是優點也非常明顯,它給了使用者最大的自由度來自定義容器的網路環境。

--- 以上摘自《Docker容器與容器雲》