Docker 入門教程(九):容器網絡與通信機制

文章目錄

  • 🐳 Docker 入門教程(九):容器網絡與通信機制
    • 一、Docker 網絡模型
    • 二、Docker 的四種網絡類型
    • 三、容器間通信機制
    • 四、相關指令

🐳 Docker 入門教程(九):容器網絡與通信機制


一、Docker 網絡模型

Docker 網絡建立在 Linux 的標準網絡堆棧之上。

你可以把 Docker 的默認網絡結構理解為這樣:

[容器A] -- vethA --┐│[docker0] -- [eth0/eth1] -- 外網│
[容器B] -- vethB --┘
  • 每個容器都有自己的虛擬網卡(veth)
  • 它連到一個橋接設備(如 docker0)
  • Docker 使用 NAT 和 iptables 把容器網絡流量轉發出去

二、Docker 的四種網絡類型

1. bridge(默認網絡)

docker run -it ubuntu
  • 容器會被接入 docker0 網橋
  • 它會獲得一個私有 IP,如 172.17.0.2
  • 容器與容器通信需要通過 IP 地址
  • 不支持容器名通信(除非用 extra hosts)

原理:

  • veth pair 虛擬網卡連接容器與宿主的 docker0 網橋
  • iptables + NAT 轉發出網流量

2. host 網絡(共享主機)

docker run --network host nginx
  • 容器直接用宿主的網絡協議棧
  • 沒有獨立 IP,容器中的 localhost 就是宿主
  • 所有端口直接暴露在宿主上
  • 性能高(少一層 NAT)
  • 安全性低,容易沖突

3. none 網絡(禁用)

docker run --network none alpine
  • 容器沒有任何網絡接口(除了 lo
  • 它無法 ping、curl、connect 到任何外部主機
  • 完全隔離

用于:

  • 極端安全場景(如跑本地算法模型)
  • 自己配置網絡(如 macvlan)

4. 自定義 bridge 網絡(推薦)

docker network create mynet
  • 容器獲得獨立私有 IP(如 172.18.x.x)
  • 自動啟用 Docker 內建 DNS 服務器
  • 可以通過容器名通信
  • 網絡隔離,跨網絡無法互通(unless connect)

這是生產中建議的做法


三、容器間通信機制

默認網絡:不能用容器名通信

docker run -dit --name a1 busybox
docker run -dit --name a2 busybox
docker exec -it a1 ping a2  # 無法解析

因為默認網絡沒有 DNS 解析;只能用 IP 訪問,但 IP 每次變化

自定義網絡下:支持 DNS 容器名通信

docker network create mynet
docker run -dit --name a1 --network mynet busybox
docker run -dit --name a2 --network mynet busybox
docker exec -it a1 ping a2 # 成功

Docker 會在該網絡中啟用 DNS 服務,自動解析容器名;每個容器注冊自己的名字


四、相關指令

docker network ls

列出所有網絡,包括系統默認和自定義的:

docker network ls

輸出示例:

NETWORK ID     NAME        DRIVER    SCOPE
d72e7e0a6f8b   bridge      bridge    local
d8c7d1ed43e7   host        host      local
192e5ee1525d   none        null      local
ac28c2fbad1f   mynet       bridge    local

docker network inspect <網絡名>

查看網絡的詳細信息,包括:

  • 連接了哪些容器
  • 分配了哪些 IP
  • DNS 名稱等
docker network inspect mynet

docker network create [參數] <網絡名>

創建一個自定義網絡(推薦):

docker network create mynet

也可以加參數:

docker network create \--driver bridge \--subnet 192.168.100.0/24 \--gateway 192.168.100.1 \mynet

Docker 默認使用 bridge 驅動,你也可以用 overlay(Swarm)或 macvlan(高級網絡映射)


docker network rm <網絡名>

刪除網絡(網絡中不能有容器,否則會失敗):

docker network rm mynet

docker network connect

將某個容器連接到另一個網絡:

docker network connect mynet mycontainer
  • 容器可以連接多個網絡
  • 可用于跨網段打通通信

docker network disconnect

將容器從某網絡斷開:

docker network disconnect mynet mycontainer

如果容器只連接了一個網絡,斷開后它將失去網絡功能。


調試

docker exec 進入容器內測試連接

docker exec -it myapp ping otherapp
docker exec -it myapp nslookup otherapp
docker exec -it myapp curl http://otherapp:5000

docker inspect <容器名> 查看網絡配置

docker inspect myapp

重點字段:

"Networks": {"mynet": {"IPAddress": "172.18.0.2",...}
}

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

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

相關文章

從進攻性安全角度簡析 Windows PowerShell

PowerShell 是 Windows 系統中強大的腳本語言和命令行工具&#xff0c;因其靈活性和與 .NET 框架的深度集成&#xff0c;成為攻擊者執行惡意操作的熱門選擇。從進攻性安全視角看&#xff0c;PowerShell 的語言模式、執行策略&#xff08;Execution Policy&#xff09;、AMSI 繞…

MySQL的深度分頁如何優化!

MySQL深度分頁&#xff08;例如 LIMIT 1000000, 20&#xff09;性能差的主要原因在于 OFFSET 需要掃描并跳過大量數據&#xff0c;即使這些數據最終并不返回。隨著 OFFSET 增大&#xff0c;性能會急劇下降。 以下是優化深度分頁的常用策略&#xff0c;根據場景選擇最適合的方案…

K8s Pod 調度基礎——1

目錄 一、Replication Controller&ReplicaSet ?一、Replication Controller (RC)? ?原理? ?特性? ?意義? ?示例與逐行解釋? ?二、ReplicaSet (RS)? ?原理? ?特性? ?意義? ?示例與逐行解釋? ?三、RC 與 RS 的對比? ?四、總結? 二、Dea…

C# Task異步的常用方法

Task異步的常用方法 C# 中的 Task 類是 System.Threading.Tasks 命名空間的一部分&#xff0c;用于表示異步操作。 一、Task.Run(Action action): 此靜態方法用于在后臺運行一個新任務&#xff0c;并返回與該任務關聯的 Task 實例。 本質是將任務放入線程池執行&#xff0c;自…

OpenResty實戰之PB級物聯網數據處理:時序數據庫優化實戰

某智慧能源平臺通過本方案成功處理了日均1.2萬億數據點&#xff0c;存儲成本降低70%&#xff0c;查詢延遲從分鐘級優化到亞秒級。本文將深入解析PB級物聯網數據處理的核心挑戰與時序數據庫深度優化技巧。 一、物聯網數據特性與存儲挑戰 1.1 物聯網數據核心特征 #mermaid-svg-U…

聊聊架構(5)數字化時代的平臺商業架構

在數字化浪潮的推動下&#xff0c;平臺經濟已成為全球經濟增長的關鍵驅動力。作為架構師&#xff0c;不僅要精通架構設計的基礎方法論&#xff0c;還需具備敏銳的商業洞察力。架構的價值在于服務業務和商業&#xff0c;而業務的發展又促使架構不斷演進。本文將深入探討平臺的商…

【數據增強】精細化貼圖數據增強

1.任務背景 假設我有100個蘋果的照片&#xff0c;我需要把這些照片粘貼到傳送帶照片上&#xff0c;模擬“傳送帶蘋果檢測”場景。 這種貼圖的方式更加合理一些&#xff0c;因為yolo之類的mosaic貼圖&#xff0c;會把圖像弄的非常支離破碎。 現在我需要隨機選擇幾張蘋果圖像&am…

HTML響應式Web設計

什么是響應式Web設計&#xff1f; RWD指的是響應式Web設計&#xff08;Responsive Web Design)RWD能夠以可變尺寸傳遞網頁RWD對于平板和移動設備是必需的 創建一個響應式設計&#xff1a; <!DOCTYPE html> <html lang"en-US"> <head> <styl…

【讀代碼】百度開源大模型:ERNIE項目解析

一、項目基本介紹 1.1 項目概述 ERNIE(Enhanced Representation through kNowledge IntEgration)是百度基于PaddlePaddle深度學習框架開發的多模態預訓練模型體系。最新發布的ERNIE 4.5系列包含10個不同變體,涵蓋從300B參數的巨型MoE模型到0.3B的輕量級模型,形成完整的多…

2025年6月:技術探索與生活平衡的協奏曲

> 當代碼與晨跑軌跡在初夏的陽光下交織,我找到了程序員生活的黃金分割點 --- ### 一、技術突破:AI驅動的智能工作流優化系統 這個月我成功部署了第三代自動化工作流系統,核心創新在于**動態決策樹+實時反饋機制**。系統可自主優化處理路徑,錯誤率下降62%! ```pyth…

如何查看服務器運行了哪些服務?

&#x1f7e2; 一、Linux服務器Linux下&#xff0c;常用以下幾種方法&#xff1a;? 1. 查看所有正在監聽端口的服務netstat -tulnp 含義&#xff1a;-t TCP-u UDP-l 監聽狀態-n 顯示端口號-p 顯示進程號和程序名示例輸出&#xff1a;pgsql復制編輯Proto Recv-Q Send-Q Local A…

【Linux基礎知識系列】第三十八篇 - 打印系統與 PDF 工具

在Linux系統中&#xff0c;打印和PDF處理是日常辦公和文檔管理中不可或缺的功能。CUPS&#xff08;Common Unix Printing System&#xff09;是Linux中常用的打印服務&#xff0c;它提供了打印任務的管理和打印設備的配置功能。同時&#xff0c;Linux也提供了多種PDF處理工具&a…

STM32CUBEMX 使用教程6 — TIM 定時器配置、定時中斷

往期文章推薦&#xff1a; STM32CUBEMX 使用教程5 — DMA配置 & 串口結合DMA實現數據搬運 STM32CUBEMX 使用教程4 — 串口 (USART) 配置、重定向 printf 輸出 STM32CUBEMX 使用教程3 — 外部中斷&#xff08;EXTI&#xff09;的使用 STM32CUBEMX 使用教程2 — GPIO的使…

微信小程序實現table表格

微信小程序沒有table標簽&#xff0c;運用display:table和display:flex實現一個內容字數不固定表格…… wxml&#xff1a; <view class"ContentShow"> <view class"conht">煙臺市新聞發布會登記審批表</view> <view class"tabl…

MySQL 基本面試題

目錄 一、SQL的基本操作 1、SQL查詢的執行順序 2、count(*)、count(1) 、count(列名) 的區別 3、char 和 varchar 的區別 4、MySQL 中常用的基礎函數 5、MySQL的執行流程 6、MyISAM和InnoDB的區別 二、事務 1、事務的基本概念 2、事務的四大特性&#xff08;ACID) 3…

WPF學習筆記(12)下拉框控件ComboBox與數據模板

下拉框控件ComboBox與數據模板 一、ComboBox1. ComboBox概述2. ItemsControl類3. Selector類4. ComboBox類 二、ComboBox數據模板總結 一、ComboBox 1. ComboBox概述 ComboBox類代表一個有下拉列表的選擇控件&#xff0c;供用戶選擇。 官方文檔&#xff1a;https://learn.mic…

Docker for Windows 設置國內鏡像源教程

在使用 Docker 時&#xff0c;由于默認的 Docker Hub 鏡像源位于國外&#xff0c;國內用戶在拉取鏡像時可能會遇到速度慢或連接不穩定的問題。為了加速鏡像拉取&#xff0c;可以將 Docker 配置為使用國內鏡像源。以下是適用于 Windows 系統的詳細配置方法&#xff1a; 方法一&…

一鍵部署AI工具!用AIStarter快速安裝ComfyUI與Stable Diffusion

AIStarter部署AI工具&#xff0c;讓AI開發更簡單&#xff01;無需研究復雜環境配置&#xff0c;AIStarter平臺提供一鍵安裝ComfyUI和Stable Diffusion&#xff0c;支持多版本選擇&#xff0c;快速上手。以下是詳細步驟&#xff1a; 一、訪問AIStarter市場 下載AIStarter&#x…

Python基礎(吃洋蔥小游戲)

下面我將為你設計一個"吃洋蔥小游戲"的Python實現方案&#xff0c;使用Pygame庫開發。這個游戲模擬吃洋蔥的過程&#xff0c;玩家需要收集不同種類的洋蔥以獲得高分&#xff0c;同時避免吃到辣椒。 &#x1f9c5; 吃洋蔥小游戲 - Python實現方案 &#x1f3ae; 1. …

Objective-C 路由表原理詳解

在 Objective-C 中實現路由表是組件化架構的核心&#xff0c;它通過 URL 映射機制實現模塊間解耦通信。以下是完整實現原理&#xff1a; 一、核心架構設計 #mermaid-svg-5jMinPiZe8mivAbi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fil…