目錄
docker四種網路模式有什麼差別
首頁 運維 Docker docker四種網路模式有什麼差別

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

Feb 23, 2022 am 11:45 AM
docker

差異: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

熱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