首頁  >  文章  >  運維  >  docker四種網路模式有什麼差別

docker四種網路模式有什麼差別

WBOY
WBOY原創
2022-02-23 11:45:355287瀏覽

差異:1、host模式的容器和宿主機共用一個「Network Namespace」;2、Container模式所建立的容器會與指定的容器共用IP和連接埠範圍;3、None模式關閉了容器的網路功能;4、Bridge預設模式為每個容器分配設定IP。

docker四種網路模式有什麼差別

本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

docker四種網路模式有什麼差別

一、四種網路模式

docker四種網路模式有什麼差別

二、實作原理

Docker使用Linux橋接,在宿主機虛擬一個Docker容器網橋(docker0),Docker啟動一個容器時會根據Docker網橋的網段分配給容器一個IP位址,稱為Container-IP,同時Docker網橋是每個容器的預設閘道。因為在同一宿主機內的容器都連接到同一個網橋,這樣容器之間就能夠透過容器的Container-IP直接通訊

Docker網橋是宿主機虛擬出來的,並不是真實存在的網路設備,外部網路是無法尋址到的,這也意味著外部網路無法透過直接Container-IP存取到容器。如果容器希望外部存取能夠存取到,可以透過映射容器連接埠到宿主主機(連接埠對映),即docker run建立容器時候透過-p 或-P 參數來啟用,存取容器的時候就透過[宿主機IP]: [容器連接埠]存取容器

1.Host模式

如果啟動容器的時候使用host模式,那麼這個容器將不會得到一個獨立的Network Namespace,而是和宿主機器共用一個Network Namespace,容器不會虛擬出自己的網路卡,設定自己的IP等,而是使用宿主機器的IP和連接埠

使用host模式的容器可以直接使用宿主機的IP位址與外界通信,容器內部的服務端口也可以使用宿主機的端口,不需要進行NAT,host最大的優勢就是網路效能比較好,但是docker host上已經使用的端口就不能再用了,網路的隔離性不好

2.Container模式

建立的容器不會建立自己的網路卡,配置自己的IP,而是和一個指定的容器共用IP、連接埠範圍

這個模式指定新建立的容器和已經存在的一個容器共用一個Network Namespace,而不是和宿主機共用。同樣,兩個容器除了網路方面,其他的如檔案系統、進程列表等還是隔離的。兩個容器的進程可以透過lo 網路卡設備通訊

3.None模式

該模式關閉了容器的網路功能

使用none模式,Docker容器擁有自己的Network Namespace,但是,並未為Docker容器進行任何網路配置。也就是說,這個Docker容器沒有網路卡、IP、路由等資訊。需要我們自己為Docker容器添加網卡、配置IP等

這種網絡模式下容器只有lo回環網絡,沒有其他網卡。 none模式可以在容器建立時透過–network=none來指定。這種類型的網路沒有辦法聯網,封閉的網路能很好的保證容器的安全性

單機沒網,安全性很高,可以安全的儲存數據,不會被攻擊

4.Bridge模式(預設)

此模式會為每個容器分配、設定IP等,並將容器連接到一個docker0虛擬網橋,透過docker0網橋以及iptables nat表配置與宿主之間的關聯

當Docker程序啟動時,會在主機上建立一個名為docker0的虛擬網橋,此主機上啟動的Docker容器會連接到這個虛擬網橋上。虛擬網橋的工作方式和實體交換器類似,這樣主機上的所有容器就透過交換器連在了一個二層網路中

從docker0子網路中分配一個IP給容器使用,並且設定docker0的IP位址為容器的預設閘道。在主機上建立一對虛擬網卡veth pair設備,Docker將veth pair設備的一端放在新建立的容器中,並命名為eth0(容器的網卡),另一端放在主機中,以vethxxx這樣類似的名字命名,並將這個網路設備加入docker0網橋。可以透過brctl show指令查看

bridge模式是docker的預設網路模式,不寫–net參數,就是bridge模式。使用docker run -p時,docker實際上是在iptables做了DNAT規則,實現連接埠轉送功能。可以使用iptables -t nat -vnL查看

綜上

Host : 與宿主機共享網路名稱空間/網路協定棧,IP 共享、連接埠範圍共享.

Container: 多個容器之間共用一個networknamespaces,多個容器公用一個IP和連接埠範圍

None : 自閉空間,無網路卡,無需網路連線

Bridge: 橋接, 預設模式,在不指定網路模式的情況下建立容器,預設使用此模式, 透過Veth對連接容器與docker0網橋,網橋分配IP給容器,同時docker0作為「區域網路」內容器的網關,最後和宿主機網卡進行通訊, 同時,透過IPtables規則將容器IP/port映射出去,用於與宿主機網卡交互

推薦學習:《docker視訊教學

#

以上是docker四種網路模式有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn