Docker 中多個容器之間的通信

在 Docker 中,多個容器之間的通信可以通過以下幾種主要方式實現,具體選擇取決于網絡需求、隔離性及管理復雜度:


一、自定義 Bridge 網絡(推薦)

通過創建自定義的 Docker 網絡,容器可以加入同一網絡并通過容器名稱或別名直接通信,無需依賴易變的 IP 地址。

  1. 創建自定義網絡
    docker network create mynet
    
  2. 啟動容器并加入網絡
    docker run -d --name web --network mynet nginx
    docker run -it --name client --network mynet alpine
    
  3. 通過容器名稱通信
    client 容器中執行 ping web 或通過 HTTP 訪問 http://web:80
    優勢:支持 DNS 自動解析,隔離性強,適合生產環境。

二、Docker Compose 編排網絡

使用 Docker Compose 定義多容器應用,自動創建獨立網絡并實現服務間通信。

  1. 定義 Compose 文件
    version: '3'
    services:web:image: nginxdb:image: postgres
    
  2. 啟動服務
    docker-compose up -d
    
    web 服務可通過 db:5432 訪問數據庫。
    優勢:簡化配置,支持聲明式網絡管理。

三、默認 Bridge 網絡(簡單測試)

Docker 默認的 bridge 網絡允許容器通過 IP 地址通信,但需手動維護 IP。

  1. 啟動容器(默認加入 bridge 網絡)
    docker run -d --name container1 nginx
    docker run -it --name container2 alpine
    
  2. 通過 IP 通信
    container2 中執行 ping <container1_ip>
    局限:IP 地址隨容器重啟變化,需動態獲取。

四、Host 模式(高性能場景)

容器直接使用宿主機的網絡棧,通過 localhost 或宿主機 IP 通信。

  • 啟動容器
    docker run -d --name service1 --network host nginx
    docker run -it --network host alpine
    
    alpine 中訪問 http://localhost:80
    優勢:零網絡開銷;缺點:犧牲網絡隔離性。

五、跨主機通信(集群場景)

通過 Overlay 網絡實現跨物理機或虛擬機的容器通信,需配合 Docker Swarm 或 Kubernetes。

  1. 創建 Overlay 網絡
    docker network create -d overlay my-overlay
    
  2. 在 Swarm 集群中部署服務
    docker service create --network my-overlay --name service1 nginx
    
    適用場景:分布式微服務架構。

其他補充方式

  1. 共享卷:通過掛載同一數據卷實現文件級通信(非網絡通信)。
  2. 消息隊列(如 RabbitMQ):異步解耦容器間的通信。
  3. 網絡代理(如 Nginx):通過反向代理路由流量。

選擇策略

場景推薦方案特點
單機開發測試Docker Compose自動化網絡配置,服務發現便捷
生產環境微服務自定義 Bridge 網絡DNS 解析,隔離性強
高性能需求Host 模式低延遲,犧牲隔離性
跨主機集群Overlay 網絡支持多節點通信,需集群管理工具

調試工具

  • 查看容器 IP:
    docker inspect -f '{{.NetworkSettings.IPAddress}}' <容器名>
    
  • 測試網絡連通性:
    docker exec -it client curl http://web:80
    

通過合理選擇上述方案,可覆蓋 90% 的 Docker 容器通信需求。推薦優先使用 自定義 Bridge 網絡Docker Compose 以平衡靈活性與維護性。

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

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

相關文章

Day1-初次接觸UFS

經過導師初次介紹&#xff0c;了解工作以芯片測試為主&#xff0c;需堅持學習&#xff0c;小白大致需3-6月入門。整體學習應分為3大塊&#xff0c;UFS協議占40%&#xff08;3-4h&#xff09;,C技能占40%&#xff08;3-4h&#xff09;,工具或業務占20%&#xff08;1-2h&#xff…

【LeetCode 熱題100】二叉樹構造題精講:前序 + 中序建樹 有序數組構造 BST(力扣105 / 108)(Go語言版)

&#x1f331; 二叉樹構造題精講&#xff1a;前序 中序建樹 & 有序數組構造 BST 本文圍繞二叉樹的兩類構造類題目展開解析&#xff1a; 從前序與中序遍歷序列構造二叉樹 將有序數組轉換為二叉搜索樹 我們將從「已知遍歷構造樹」和「平衡構造 BST」兩個角度&#xff0c;拆…

JMeter重要的是什么

重要特性 支持多種協議&#xff1a; JMeter支持對多種協議進行性能測試&#xff0c;包括HTTP、HTTPS、FTP、JDBC&#xff08;數據庫&#xff09;、LDAP、JMS、SOAP、REST等。這使得它能夠適應各種不同的測試場景。強大的負載模擬能力&#xff1a; JMeter能夠模擬大量的虛擬用戶…

一文讀懂WPF系列之MVVM

WPF MVVM 什么是MVVMWPF為何使用MVVM機制WPFMVVM 的實現手段 INotifyPropertyChanged?數據綁定的源端通知??原理 PropertyChanged事件雙向綁定的完整條件常見疑惑問題 什么是MVVM 翻譯全稱就是 model-view-viewmodel 3部分內容 以wpf的概念角度來解釋就是 數據庫數據源模型…

OCR API識別對比

OCR 識別DEMO OCR識別 demo 文檔由來 最開始想使用百度開源的 paddlepaddle大模型 研究了幾天&#xff0c;發現表格識別會跨行&#xff0c;手寫識別的也不很準確。最終還是得使用現成提供的api。。 文檔說明 三個體驗下來 騰訊的識別度比較高&#xff0c;不論是手寫還是識別表…

嵌入式MCU常用模塊

日后填坑。 無線通信模塊 2.4G 基本介紹 以NRF24L01為例。 NRF24L01是一款2.4GHz的無線收發模塊&#xff0c;支持SPI通信協議&#xff0c;具有低功耗、高數據速率&#xff08;250kbps-2Mbps&#xff09;和多設備通信能力。 它可以同時與最多6個其他模塊通信&#xff0c;適合…

記一次InternVL3- 2B 8B的部署測驗日志

測試效果&#xff1a; 問題和耗時如圖 5、資源占用 不釋放資源會一直漲顯存。總體還算滿意&#xff0c;我試了好多個圖理解大模型&#xff0c;就屬它牛一點 附圖一張 補充&#xff0c;測試InternVL3-2B的結果 1、模型下載魔搭社區 2、運行環境&#xff1a; 1、硬件 RTX 30…

Java版本對應關系表

Java版本對應關系表 以下Java主要版本&#xff08;Major Version&#xff09;與公開大版本號的對應關系 公開大版本名稱Major 版本號內部版本號格式示例&#xff08;java -version輸出&#xff09;Java 8 (1.8)52 (0x34)1.8.0_XXX1.8.0_301Java 953 (0x35)9.0.X9.0.4Java 105…

2025最新版flink2.0.0安裝教程(保姆級)

Flink支持多種安裝模式。 local&#xff08;本地&#xff09;——本地模式 standalone——獨立模式&#xff0c;Flink自帶集群&#xff0c;開發測試環境使用 standaloneHA—獨立集群高可用模式&#xff0c;Flink自帶集群&#xff0c;開發測試環境使用 yarn——計算資源統一…

android11 配置默認電池優化白名單

目錄 1.介紹 2.讀取配置文件 3.默認配置一個白名單列表 1.介紹 在 Android 11 中,DeviceIdleController 是負責控制設備進入 Doze 模式(閑置模式) 的核心系統服務,其內部方法 readConfigFileLocked() 負責從配置文件中讀取 Doze 模式的行為參數,包括 idle 階段的時間間…

java中的Future的設計模式 手寫一個簡易的Future

案例 例如&#xff1a;今天是小妹的生日&#xff0c;需要一個蛋糕有點儀式感&#xff0c;于是去蛋糕店預定&#xff0c;預定完之后&#xff0c;店老板說蛋糕做好了&#xff0c;到時電話通知你&#xff0c;不可能在這傻傻的等著吧&#xff0c;還有其他事情要做啊&#xff0c;于…

【Redis】Redis C++使用

一、Redis的自定義網絡協議 1.1 為什么可以編寫出一個自定義的Redis客戶端 為什么我們可以編寫出一個自定義的Redis客戶端&#xff1f;因為Redis公開了自己的自定義協議。而對于一些其他軟件的客戶端&#xff0c;我們無法編寫出一個自定義的Redis客戶端&#xff0c;因為他們沒…

【軟考系統架構設計師】軟件工程知識點

1、 軟件開發生命周期 軟件定義時期&#xff1a;包括可行性研究和詳細需求分析過程&#xff0c;任務是確定軟件開發工程必須完成的總目標&#xff0c;具體分為問題定義、可行性研究、需求分析等 軟件開發時期&#xff1a;軟件的設計與實現&#xff0c;分為概要設計、詳細設計、…

DeepSeek 與開源:肥沃土壤孕育 AI 碩果

當國產 AI DeepSeek 以其低成本推理和多模態能力在全球范圍內引起轟動時&#xff0c;人們驚嘆于中國技術的迅猛發展&#xff0c;卻很少有人深究這一成就背后的根基。答案其實早已寫在中國開源生態二十多年的發展歷程中。 從倪光南院士提出“以開源打破技術壟斷”的理念&#x…

職坐標:智慧城市未來發展的核心驅動力

內容概要 智慧城市的演進正以顛覆性創新重構人類生存空間&#xff0c;其發展脈絡由物聯網、人工智能與云計算三大技術支柱交織而成。這些技術不僅推動城市治理從經驗決策轉向數據驅動模式&#xff0c;更通過實時感知與智能分析&#xff0c;實現交通、能源等領域的精準調控。以…

vue復習46~90

1.小兔鮮 所有都折疊 ctrl k,ctrl0 所有都展開 ctrl k,ctrlj當前結構渲染5次 <BaseBrandItem v-for"item in 5" :key"item"><BaseBrandItem>2.scoped樣式沖突 結構&#xff1a;只能有一個根元素樣式&#xff1a;全局樣式(默認)&#xff1…

PHP 用 workman 即時通訊,做個簡版QQ

1. workman是什么 &#xff0c;一般應用在那些地方 workerman是一個高性能的PHP socket 服務器框架&#xff0c;workerman基于PHP多進程以及libevent事件輪詢庫&#xff0c;PHP開發者只要實現一兩個接口&#xff0c;便可以開發出自己的網絡應用&#xff0c;例如Rpc服務、聊天室…

【WORD】批量將doc轉為docx

具體步驟進行&#xff1a; 打開Word文檔&#xff0c;按下AltF11快捷鍵&#xff0c;打開VBA編輯器。在VBA編輯器中&#xff0c;左側的“項目資源管理器”窗口會顯示當前打開的Word文檔相關項目。找到您要添加代碼的文檔項目&#xff08;通常以文檔名稱命名&#xff09;&#xf…

【免費】【實測有用】5KPlayer Windows 電腦作為 MacBook 無線擴展屏

總結&#xff1a;使用 5KPlayer 將 Windows 電腦作為 MacBook 無線擴展屏 準備工作 設備要求&#xff1a; MacBook 和 Windows 電腦需連接到同一 Wi-Fi 網絡。【這里有雷&#xff1a;eduroam不會成功&#xff0c;家里的WIFI成功了&#xff0c;需要確認校園網是否可行。】確保…

華為華三模擬器解決兼容問題Win11 24H2 現在使用ENSP的問題解決了

一、Win11 24H2 現在使用ENSP的問題解決了 這個Win11 的 24H2不能使用ENSP的問題已經困擾我們很久了,在之前的文章中,我們也有說明這個問題 之前ENSP肯定啟動會報錯40 當時還建議大家先不要更新到win11的24H2版本,現在終于迎來了更新,不用再擔心了,包括早就升級了24H2版…