目錄
實作原理
四類網路模式
host模式
#container模式
none模式
bridge模式
首頁 運維 Docker docker的四種網路模式是什麼

docker的四種網路模式是什麼

Nov 25, 2021 pm 05:30 PM
docker

docker的四種網路模式為:1、host模式,使用「–net=host」指定;2、container模式,用「–net=container:NAME_or_ID」指定;3、none模式,用“–net=none”指定;4、bridge模式。

docker的四種網路模式是什麼

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

實作原理

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

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

四類網路模式

##–net=bridge(預設為該模式)

host模式

如果啟動容器的時候使用host模式,那麼這個容器將不會得到一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網路卡,配置自己的IP等,而是使用宿主機器的IP和連接埠。但是,容器的其他方面,如檔案系統、進程清單等還是和宿主機隔離的。

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

Host模式如下圖所示:

docker的四種網路模式是什麼

#container模式

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

Container模式示意圖:

docker的四種網路模式是什麼

none模式

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

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

None模式示意圖:

docker的四種網路模式是什麼

bridge模式

當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查看。

bridge模式如下圖所示:

docker的四種網路模式是什麼

推薦學習:《docker影片教學

Docker網路模式 設定 說明
#host模式 –net=host 容器和宿主機共用Network namespace。
container模式 –net=container:NAME_or_ID 容器和另一個容器共用Network namespace。 kubernetes中的pod就是多個容器共用一個Network namespace。
none模式 –net=none #容器有獨立的Network namespace,但並沒有對其進行任何網路設置,例如分配veth pair 和網橋連接,設定IP等。
bridge模式

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker怎麼退出容器 docker怎麼退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

docker內的文件怎麼拷貝到外面 docker內的文件怎麼拷貝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

docker怎麼重啟 docker怎麼重啟 Apr 15, 2025 pm 12:06 PM

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

docker怎麼更新鏡像 docker怎麼更新鏡像 Apr 15, 2025 pm 12:03 PM

更新 Docker 鏡像的步驟如下:拉取最新鏡像標記新鏡像為特定標籤刪除舊鏡像(可選)重新啟動容器(如果需要)

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

See all articles