搜尋
首頁運維Dockerdocker有幾種網路模式

在docker中,一共有四種網路模式,分別是host模式容器共享宿主機的ip和連接埠號碼、container模式共享容器ip位址和連接埠、none模式容器沒有網路卡等資訊、bridge模式容器直接可以互相通訊。

docker有幾種網路模式

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

docker有幾種網路模式

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

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

四類網路模式

docker有幾種網路模式

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有幾種網路模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
為什麼要使用Docker?解釋的好處和優勢為什麼要使用Docker?解釋的好處和優勢Apr 25, 2025 am 12:05 AM

使用Docker的原因是它提供高效、便攜且一致的環境來打包、分發和運行應用程序。 1)Docker是一種容器化平台,允許開發者將應用程序及其依賴項打包到輕量級、可移植的容器中。 2)它基於Linux容器技術和聯合文件系統,確保快速啟動和高效運行。 3)Docker支持多階段構建,優化鏡像大小和部署速度。 4)使用Docker可以簡化開發和部署流程,提高效率並確保跨環境的一致性。

Docker在行動:現實世界中的示例和用例Docker在行動:現實世界中的示例和用例Apr 24, 2025 am 12:10 AM

Docker在實際項目中的應用場景包括簡化部署、管理多容器應用和性能優化。 1.Docker簡化了應用部署,如使用Dockerfile部署Node.js應用。 2.DockerCompose管理多容器應用,如微服務架構中的Web和數據庫服務。 3.性能優化使用多階段構建減小鏡像大小,並通過健康檢查監控容器狀態。

Docker vs. Kubernetes:用例和方案Docker vs. Kubernetes:用例和方案Apr 23, 2025 am 12:11 AM

在小型項目或開發環境中選擇Docker,在大型項目或生產環境中選擇Kubernetes。 1.Docker適合快速迭代和測試,2.Kubernetes提供強大的容器編排能力,適合管理和擴展大型應用。

Linux上的Docker:Linux系統的容器化Linux上的Docker:Linux系統的容器化Apr 22, 2025 am 12:03 AM

Docker在Linux上重要,因為Linux是其原生平台,提供了豐富的工具和社區支持。 1.安裝Docker:使用sudoapt-getupdate和sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io。 2.創建和管理容器:使用dockerrun命令,如dockerrun-d--namemynginx-p80:80nginx。 3.編寫Dockerfile:優化鏡像大小,使用多階段構建。 4.優化和調試:使用dockerlogs和dockerex

Docker:容器化工具,Kubernetes:編排者Docker:容器化工具,Kubernetes:編排者Apr 21, 2025 am 12:01 AM

Docker是容器化工具,Kubernetes是容器編排工具。 1.Docker打包應用及其依賴成容器,可在任何支持Docker的環境中運行。 2.Kubernetes管理這些容器,實現自動化部署、擴展和管理,使應用高效運行。

Docker的目的:簡化應用程序部署Docker的目的:簡化應用程序部署Apr 20, 2025 am 12:09 AM

Docker的目的是簡化應用部署,通過容器化技術確保應用在不同環境中一致運行。 1)Docker通過將應用和依賴打包到容器中,解決了環境差異問題。 2)使用Dockerfile創建鏡像,確保應用在任何地方一致運行。 3)Docker的工作原理基於鏡像和容器,利用Linux內核的命名空間和控制組實現隔離和資源管理。 4)基本用法包括從DockerHub拉取並運行鏡像,高級用法涉及使用DockerCompose管理多容器應用。 5)常見錯誤如鏡像構建失敗和容器無法啟動,可通過日誌和網絡配置調試。 6)性能優化建

Linux和Docker:不同Linux發行版的DockerLinux和Docker:不同Linux發行版的DockerApr 19, 2025 am 12:10 AM

在Ubuntu、CentOS和Debian上安裝和使用Docker的方法各有不同。 1)Ubuntu:使用apt包管理器,命令為sudoapt-getupdate&&sudoapt-getinstalldocker.io。 2)CentOS:使用yum包管理器,需添加Docker倉庫,命令為sudoyuminstall-yyum-utils&&sudoyum-config-manager--add-repohttps://download.docker.com/lin

掌握Docker:Linux用戶指南掌握Docker:Linux用戶指南Apr 18, 2025 am 12:08 AM

在Linux上使用Docker可以提高開發效率和簡化應用部署。 1)拉取Ubuntu鏡像:dockerpullubuntu。 2)運行Ubuntu容器:dockerrun-itubuntu/bin/bash。 3)創建包含nginx的Dockerfile:FROMubuntu;RUNapt-getupdate&&apt-getinstall-ynginx;EXPOSE80。4)構建鏡像:dockerbuild-tmy-nginx.。 5)運行容器:dockerrun-d-p8080:80

See all articles

熱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

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

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器