Docker 網絡設置方式詳解

Docker 網絡是容器通信的核心基礎,它允許容器之間、容器與主機之間以及容器與外部網絡之間進行數據交互。Docker 提供了多種網絡驅動類型,適用于不同場景,下面詳細介紹 Docker 網絡的設置方式。

一、Docker 網絡的基本概念

Docker 網絡通過驅動程序(Driver) 實現不同的網絡模式,核心作用是:

  • 隔離容器網絡環境
  • 實現容器間通信
  • 控制容器與外部網絡的連接

Docker 安裝后會自動創建 3 種默認網絡,可通過 docker network ls 查看:

# 查看所有網絡
docker network ls

在這里插入圖片描述

默認網絡包括:

  • bridge:默認網絡,單機容器間通信(最常用)
  • host:容器直接使用主機網絡棧(無網絡隔離)
  • none:禁用容器網絡(完全隔離)

二、自定義網絡的創建(核心操作)

默認網絡功能有限,實際場景中通常需要創建自定義網絡。通過 docker network create 命令創建,支持多種驅動類型,常用參數如下:

參數說明
--driver-d指定網絡驅動(如 bridge、overlay 等)
--subnet配置子網(如 192.168.0.0/16)
--gateway配置網關 IP
--ip-range分配容器的 IP 范圍(如 192.168.1.0/24)
--opt-o驅動特定的選項(如橋接名稱)
--name自定義網絡名稱
1. Bridge 網絡(最常用,單機容器通信)

Bridge 是默認驅動,適合同一主機內的容器通信,支持 DNS 解析(容器可通過名稱互訪)。

創建自定義 bridge 網絡

# 基礎創建(自動分配子網)
docker network create my-bridge-net# 自定義子網、網關和 IP 范圍
docker network create \--driver bridge \--subnet 172.20.0.0/16 \  # 子網--gateway 172.20.0.1 \    # 網關--ip-range 172.20.1.0/24 \ # 容器 IP 范圍--opt "com.docker.network.bridge.name"="my-bridge" \ # 自定義橋接設備名my-custom-bridge

特點

  • 容器默認分配該網絡的 IP(可通過 --ip 指定固定 IP)
  • 支持容器名稱互訪(如容器 app1 可直接 ping app2
  • 與默認 bridge 相比,安全性更高(默認隔離,需顯式連接)
2. Host 網絡(無網絡隔離)

Host 驅動讓容器直接使用主機的網絡棧(IP、端口與主機共享),性能最優但無隔離性。

創建 host 網絡(通常無需手動創建,直接使用默認 host 網絡):

# 使用默認 host 網絡運行容器(無需創建)
docker run -d --network host --name my-host-app nginx

特點

  • 容器無需端口映射(直接使用主機端口,如容器的 80 端口即主機的 80 端口)
  • 適合對網絡性能要求極高的場景(如高頻通信服務)
  • 安全性低(容器直接暴露在主機網絡中)
3. Overlay 網絡(跨主機容器通信)

Overlay 驅動用于跨主機的容器通信(需 Docker Swarm 集群環境),通過 VXLAN 技術實現跨主機數據傳輸。

創建步驟

  1. 初始化 Swarm 集群(需至少 1 個管理節點):

    docker swarm init --advertise-addr 主機IP  # 管理節點初始化
    
  2. 創建 overlay 網絡:

    docker network create \--driver overlay \--attachable \  # 允許非 Swarm 服務的容器連接--subnet 10.0.0.0/24 \my-overlay-net
    

特點

  • 跨主機容器可直接通信(無需復雜路由配置)
  • 支持加密(通過 --opt encrypted 開啟數據加密)
  • 依賴 Swarm 集群(單主機無需使用)
4. Macvlan 網絡(容器模擬物理設備)

Macvlan 允許為容器分配物理網卡級別的 MAC 地址,讓容器像獨立物理設備一樣接入網絡(適合需要固定網絡標識的場景)。

創建 macvlan 網絡

docker network create \--driver macvlan \--subnet 192.168.1.0/24 \--gateway 192.168.1.1 \--opt parent=eth0 \  # 綁定主機物理網卡(如 eth0)my-macvlan-net

特點

  • 容器擁有獨立 MAC 和 IP(與物理設備在同一網絡)
  • 適合需要被外部網絡直接識別的場景(如網絡設備模擬)
  • 需主機網卡支持(部分虛擬網卡可能不兼容)
5. None 網絡(完全禁用網絡)

None 驅動完全禁用容器網絡,適合無需網絡的離線任務(如數據處理腳本)。

使用方式(無需創建,直接使用默認 none 網絡):

docker run -d --network none --name no-network-app busybox sleep 3600

三、容器與網絡的關聯操作

1. 運行容器時連接網絡
# 連接到指定網絡(可同時連接多個網絡)
docker run -d \--name my-app \--network my-bridge-net \  # 主網絡--network-alias app1 \    # 網絡內別名(用于 DNS 解析)nginx# 為容器指定固定 IP(僅自定義網絡支持)
docker run -d \--name fixed-ip-app \--network my-bridge-net \--ip 172.20.1.10 \  # 需在網絡的 ip-range 范圍內nginx
2. 為運行中的容器添加/移除網絡
# 連接到新網絡
docker network connect my-overlay-net my-app# 從網絡斷開
docker network disconnect my-overlay-net my-app

四、網絡管理與調試

1. 查看網絡詳情
docker network inspect my-bridge-net  # 查看網絡配置、關聯的容器等
2. 刪除網絡
# 先斷開所有容器連接,再刪除
docker network rm my-bridge-net
3. 測試容器間通信
# 在容器內 ping 另一容器(通過名稱或 IP)
docker exec -it my-app ping app1  # 基于網絡別名通信

五、實踐

  1. 優先使用自定義 bridge 網絡:相比默認 bridge,支持 DNS 名稱解析,隔離性更好。
  2. 跨主機用 overlay:配合 Swarm 或 Kubernetes 實現集群網絡。
  3. 減少 host 網絡使用:無隔離性,可能導致端口沖突。
  4. 固定 IP 謹慎使用:動態分配更符合容器彈性伸縮特性,固定 IP 適合特殊場景(如服務注冊)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93207.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

export default和export function的作用及export的含義

在 JavaScript 中,export 是一個關鍵字,用于將模塊中的變量、函數、類等導出,以便其他模塊可以導入和使用。export default 和 export(非默認導出)是兩種不同的導出方式,它們在使用場景和語義上有明顯的區別…

免費 ollama 可用地址共享 內含免費 deepseek,gpt,bge,llama,Qwen,embed 大模型等

ollama 共享 介紹 集ollama地址的批量添加,批量校驗,批量獲取 ,api接口調用于一體 演示地址:ollama格式化工具 開源地址:https://gitee.com/web/ollama-share 使用說明 index.php 通過提交table 批量提交ollama地…

Android Audio實戰——獲取活躍音頻類型(十五)

在 Android Audio 開發中,很多場景需要獲取當前正在播放的音頻類型,而在音頻管理器 AudioManager 中并沒有發現類似的接口,這一篇文章就來看一下實現獲取活躍音頻類型的方式。 一、音頻類型獲取 對于獲取當前活躍音頻流類型,在《硬按鍵調節音量》中是通過 getActiveStream…

Verilog功能模塊--SPI主機和從機(02)--SPI主機設計思路與代碼解析

前言 上一篇文章介紹了SPI的四種工作模式及其時序特性,相信各位同學已經掌握了SPI通信的核心原理。 本文用純Verilog設計了功能完整的4線SPI主機,并詳細說明了模塊編碼思路和使用注意事項,最后分享了源碼。 一、模塊功能 本Verilog功能模塊—…

Decoder模型 向量模長表示什么

Decoder模型 向量模長表示什么 詞和其他詞的關系的強弱和關聯程度;生僻詞模長小 從實驗結果來看,Qwen2-7B-Instruct的向量模長規律與之前的預期(“模長與語義豐富度、確定性正相關”)完全相反,這反映了Decoder-only模型(尤其是指令微調模型)的表征特性與Encoder-only模…

STL容器及其算法

C 標準庫容器詳解:特性、用法與場景選型容器是 C 標準庫(STL)的核心組件,用于存儲和管理數據。不同容器因底層實現不同,在性能、功能和適用場景上差異顯著。本文系統梳理vector、list、set、map等常用容器,…

MySQL ZIP安裝教程:從解壓到啟動

金金金上線! 話不多,只講你能聽懂的前端知識 前言 我這里不能下載安裝程序的mysql,由于電腦安全限制,安裝時會彈出需要管理員賬號密碼權限,此路行不通,所以琢磨著免安裝版本怎么個流程,好&#…

p2p打洞

p2p網絡穿透庫,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp: https://libp2p.io/ P2P-udp的穿透教程: https://edu.51cto.com/lesson/731596.html 目前打洞機制最好的庫是webrtc,其次是libnice,它是輕量級的專門打洞的庫。 libni…

『“無恙心寬”,梗痛不常』——愛上古中醫(12)(健康生活是coder抒寫優質代碼的前提條件——《黃帝內經》伴讀學習紀要)

養心護心氣血通,無痛無梗全身松。 筆記模板由python腳本于2025-08-10 15:54:46創建,本篇筆記適合至少通曉一門語言,熟悉基本編程范式的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值:在于輸出思考與經驗,而不僅僅…

Spark 運行流程核心組件(一)作業提交

1、Job啟動流程1、Client觸發 SparkContext 初始化 2、SparkContext 向 Master 注冊應用 3、Master 調度 Worker 啟動 Executor 4、Worker 進程啟動 Executor 5、DAGScheduler 將作業分解為 Stage: 6、TaskScheduler 分配 Task 到 Executor 2、核心組件組件職責Spar…

MySQL 臨時表與復制表

一、MySQL 臨時表臨時表是會話級別的臨時數據載體,其設計初衷是為了滿足短期數據處理需求,以下從技術細節展開說明。(一)核心特性拓展1.生命周期與會話綁定會話結束的判定:包括正常斷開連接(exit/quit&…

從配置到調試:WinCC與S7-1200/200SMT無線Modbus TCP通訊方案

測試設備與參數l 西門子PLC型號:S7-1200 1臺l 西門子PLC型號:S7-200Smart 1臺l 上位機:WinCC7.4 1臺l 無線通訊終端——DTD418MB 3塊l 主從關系:1主2從l 通訊接口:RJ45接口l 供電:12-24VDCl 通訊協議&a…

Android沉浸式全屏顯示與隱藏導航欄的實現

1. 總體流程以下是實現沉浸式全屏顯示和隱藏導航欄的流程:步驟描述步驟1創建一個新的Android項目步驟2在布局文件中定義需要展示的界面步驟3在Activity中設置沉浸式全屏顯示步驟4處理系統UI的顯示與隱藏步驟5運行應用并測試效果2. 詳細步驟步驟1:創建一個…

EN 62368消費電子、信息技術設備和辦公設備安全要求標準

EN 62368認證標準是一項全球性的電子產品安全標準,用于評估和認證消費電子、信息技術設備和辦公設備的安全性。該標準由國際電工委員會(IEC)制定,取代了傳統的EN60065和EN 60950兩個標準,成為國際電子產品安全領域的新指導。IEC /EN 62368-1是…

【unity實戰】使用Splines+DOTween制作彎曲手牌和抽牌動畫效果

最終效果 文章目錄最終效果前言實戰1、Splines的使用2、繪制樣條線3、DOTween安裝和使用4、基于樣條曲線(Spline)的手牌管理系統4.1 代碼實現4.2 解釋:(1)計算第一張卡牌的位置(居中排列)&#…

Flask模板注入梳理

從模板開始介紹:Flask中有許多不同功能的模板,他們之間是相互隔離的地帶,可供引入和使用。Flask中的模塊:flask 主模塊:包含框架的核心類和函數,如 Flask(應用實例)、request&#x…

企業級的即時通訊平臺怎么保護敏感行業通訊安全?

聊天記錄存在第三方服務器、敏感文件被誤發至外部群組、離職員工仍能查看歷史消息.對于金融、醫療、政務等對數據安全高度敏感的行業而言,“溝通效率與”信息安全”的矛盾,從未像今天這樣尖銳。企業即時通訊怎么保護敏感行業通訊安全?這個問題…

Java Spring框架最新版本及發展史詳解(截至2025年8月)-優雅草卓伊凡

Java Spring框架最新版本及發展史詳解(截至2025年8月)-優雅草卓伊凡引言今天有個新項目 客戶問我為什么不用spring 4版本,卓伊凡我今天剛做完項目方案,我被客戶這一句問了有點愣住,Java Spring框架最新版本及發展史詳解…

Android實現Glide/Coil樣式圖/視頻加載框架,Kotlin

Android實現Glide/Coil樣式圖/視頻加載框架&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permiss…

【k8s】pvc 配置的兩種方式volumeClaimTemplates 和 PersistentVolumeClaim

pvc配置實例 實例1在Deployment中配置 template:xxxxxxvolumeClaimTemplates:- metadata:name: dataspec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfsdev-storageclass (創建好的storageClassName)實例2#先創建一個pvc 然后在 Deploym…