深入理解Docker網絡:實現容器間的內部訪問

目錄

  • 一、利用宿主機 IP + 外部端口實現容器互訪
    • 1.思路
    • 2.示例操作
    • 3.訪問測試
    • 4.工作原理
    • 5.總結
  • 二、Docker 容器之間的網絡通信(docker0 與自定義橋接網絡)
    • 1. docker0 簡介
    • 2. 通過容器 IP 訪問
    • 3. 自定義橋接網絡(推薦方式)
      • 創建自定義網絡
      • 啟動容器并加入網絡
      • 容器間通過名字訪問
    • 4. 總結

一、利用宿主機 IP + 外部端口實現容器互訪

借助 宿主機 IP + 端口映射 的方式,讓不同容器之間互相訪問。這種方法相對簡單直觀,但中間多了一次“繞行”宿主機的過程。


1.思路

  1. 啟動容器時,將容器的服務端口映射到宿主機的某個端口。
  2. 其他容器通過 宿主機 IP + 映射端口 的形式訪問目標容器的服務。

2.示例操作

假設我們創建兩個容器:

  • app1 → 宿主機端口 88 對應容器端口 80
  • app2 → 宿主機端口 99 對應容器端口 80

啟動命令如下:

# 啟動 app1
docker run -d -p 88:80 --name app1 nginx:stable-perl# 啟動 app2
docker run -d -p 99:80 --name app2 nginx:stable-perl

3.訪問測試

在宿主機或容器內部均可使用 curl 進行訪問:

# 訪問 app1
curl http://192.168.121.140:88# 訪問 app2
curl http://192.168.121.140:99

其中 192.168.121.140 是宿主機的 IP 地址。


4.工作原理

當執行:

curl http://192.168.121.140:99

時,實際過程如下:

  1. 請求先到達宿主機 IP 192.168.121.140 的端口 99
  2. Docker 端口映射規則將請求轉發到 app2 容器內部的 80 端口;
  3. 容器返回響應,再由宿主機轉發給請求方。

?? 這種方式相比容器直接通信會多經過一次宿主機轉發,因此性能上略有開銷。

宿主機端口轉發原理圖
在這里插入圖片描述


5.總結

  • 優點:簡單直觀,不需要配置額外的 Docker 網絡。
  • 缺點:容器間通信要繞過宿主機,效率較低,不如自定義網絡靈活。

二、Docker 容器之間的網絡通信(docker0 與自定義橋接網絡)

在使用 Docker 的過程中,容器之間往往需要進行網絡通信。Docker 默認會在宿主機上創建一個名為 docker0 的虛擬網橋,它在容器網絡中扮演著重要角色。


1. docker0 簡介

當你在宿主機上安裝 Docker 后,系統會自動生成一個虛擬網卡:

ifconfig

你會看到類似 docker0 的網橋接口:

docker0 網卡示意圖

它的作用是:

  • 容器與宿主機通信:每個容器都會通過 veth pair 接入 docker0,因此容器可以直接與宿主機通信。
  • 容器與容器通信:在同一 bridge 網絡下,容器之間可以通過 IP 地址互通。

2. 通過容器 IP 訪問

我們可以使用 docker container inspect 命令來查看容器的分配 IP 地址:

docker container inspect app1

容器IP地址

然后在另一容器中,通過 curl 就能訪問這個容器的服務:

curl http://容器IP:端口

不過這種方式存在一個問題:容器 IP 可能會變化(例如容器重啟后)。因此,直接使用 IP 不是一個可靠的解決方案。


3. 自定義橋接網絡(推薦方式)

Docker 默認的 bridge 網絡不支持容器名解析(即不能直接通過容器名訪問另一個容器),我們可以通過創建自定義網絡來解決這一問題。

創建自定義網絡

docker network create mynet

創建自定義網絡

啟動容器并加入網絡

docker run -d -p 88:80 --name app1 --network mynet nginx:stable-perl
docker run -d -p 99:80 --name app2 --network mynet nginx:stable-perl

容器間通過名字訪問

此時,在 mynet 網絡下,容器之間不僅可以通過 IP 互通,還可以通過 容器名 來訪問:

curl http://app2:80

在這里插入圖片描述

相比直接使用 IP,這種方式更穩定,不會受到容器 IP 變化的影響。


4. 總結

  • docker0 是 Docker 默認創建的虛擬網橋,用于實現容器與宿主機、容器與容器之間的通信。
  • 直接使用容器 IP 雖然可行,但不夠穩定。
  • 推薦使用自定義橋接網絡,這樣容器可以通過 容器名 互相訪問,更加直觀與可靠。

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

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

相關文章

ESD靜電保護二極管焊接時需要區分方向和極性嗎?-深圳阿賽姆

ESD靜電保護二極管焊接時需要區分方向和極性嗎?一、ESD二極管極性概述1.1 單向與雙向ESD二極管的基本區別ESD靜電保護二極管根據其內部結構和工作原理可分為兩種主要類型:單向ESD二極管(Unidirectional):具有明確的陽極…

Qt QML Switch和SwitchDelegate的區別?

在 Qt QML 中,Switch和 SwitchDelegate主要區別體現在定位、使用場景和功能特性上。以下是具體分析:?1. 核心定位??Switch?:是一個基礎的獨立交互控件?(繼承自 ToggleButton),用于直接提供“開/關”&a…

no module name ‘kaolin‘

如果報錯 no module named xxx 一般是沒安裝這個庫,但是各種邪修安裝了kaolin之后,還是報錯,這個報錯的核心信息是: ImportError: .../kaolin/_C.so: undefined symbol: _ZN3c104cuda20CUDACachingAllocator9allocatorE意思是 Ka…

OBS使用教程:OBS歌曲顯示插件如何下載?如何安裝使用?

OBS使用教程:OBS歌曲顯示插件如何下載?如何安裝使用? 第一步:下載OBS歌曲顯示插件,并完成安裝 OBS歌曲顯示插件下載地址①: https://d.obscj.com/obs-Setup_BGM.exe OBS歌曲顯示插件下載地址②&#xf…

基于 Java EE+MySQL+Dart 實現多平臺應用的音樂共享社區

基于多平臺應用的音樂共享社區 1 緒論 1.1 課題依據及意義 隨著互聯網娛樂項目的日益增多,內容也日漸豐富,加之網絡便利性的增強,越來越多的用戶喜歡在網上聽音樂。但是各平臺音樂資源殘次不齊,也包含了許多假無損音樂&#xf…

貪心算法在物聯網能耗優化中的應用

Java中的貪心算法在物聯網能耗優化中的應用 貪心算法是一種在每一步選擇中都采取當前狀態下最優決策的算法策略,它在物聯網(IoT)能耗優化問題中有著廣泛的應用。下面我將全面詳細地講解如何使用Java實現貪心算法來解決物聯網中的能耗優化問題。 一、物聯網能耗優化問…

59.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--新增功能--MinIO對象存儲服務

在孢子記賬中我們需要存儲用戶的頭像、賬單的圖片等文件,這些文件的存儲我們可以使用MinIO對象存儲服務, MinIO提供了高性能、可擴展的對象存儲解決方案,能夠幫助我們輕松管理這些文件資源。通過MinIO,我們可以將用戶上傳的圖片文…

ESP32三種主流的開發環境

ESP32三種主流的開發環境 1. ESP-IDF (Espressif IoT Development Framework) 這是樂鑫官方提供的專業開發框架,基于FreeRTOS實時操作系統。 特點: 功能最全面,性能最優支持所有ESP32硬件特性使用C/C編程專業級調試工具完整的組件庫和API 適合…

HarmonyOS圖形處理:Canvas繪制與動畫開發實戰

本文將全面介紹HarmonyOS 5中Canvas組件的使用方法和動畫開發技巧,通過詳細的代碼示例和最佳實踐,幫助您掌握圖形繪制和動態效果實現的核心技能。 1. Canvas組件基礎與核心API Canvas是HarmonyOS中用于2D圖形繪制的重要組件,提供了豐富的繪圖…

CCAFusion:用于紅外與可見光圖像融合的跨模態坐標注意力網絡

CCAFusion:用于紅外與可見光圖像融合的跨模態坐標注意力網絡 CCAFusion: Cross-Modal Coordinate Attention Network for Infrared and Visible Image Fusion 摘要 紅外與可見光圖像融合旨在生成一幅包含全面信息的圖像,該圖像既能保留豐富的紋理特征&a…

ESP32-P4小智編譯歷險記:從“編譯失敗“到“成功燒錄“的奇幻之旅,xiaozhi智能聊天機器人編譯避坑心得

?? ESP32-P4:AI小智編譯歷險記:從"編譯失敗"到"成功燒錄"的奇幻之旅 要編譯其他芯片esp32s3-s2-c3,遇到問題也可以在這里交流 “每一個編譯錯誤都是成長的機會,每一次成功都是堅持的勝利!” —— 某位被編譯器折磨的程序員 源碼地址:https://githu…

DIFY 項目中通過 Makefile 調用 Dockerfile 并使用 sudo make build-web 命令構建 web 鏡像的方法和注意事項

DIFY 項目中通過 Makefile 調用 Dockerfile 并使用 sudo make build-web 命令構建 web 鏡像的場景,以下是具體方法和注意事項總結: 一、通過 sudo make build-web 構建 web 鏡像的核心方法 1. 理解 Makefile 與 Dockerfile 的關聯 Makefile 的作用:DIFY 的 Makefile 中定義…

重學前端015 --- 響應式網頁設計 CSS變換

文章目錄skew()transformcursortransition.arm .left {} 和 .arm.left {} 區別skew() skew 傾斜變換函數,該函數有兩個參數。第一個是剪切x軸的角度,第二個是剪切y軸的角度。 transform: skew(0deg, 44deg);transform .arm.left {top: 35%;left: 5%;t…

【GMX v1實戰】時序風險結算與資本成本:深度解析 GMX 永續合約的資金費率機制

在去中心化衍生品交易平臺GMX中,當你準備開立杠桿合約倉位(無論是做多還是做空某個資產)時,系統會默默執行一個關鍵前置動作——調用名為 ??updateCumulativeFundingRate?? 的函數。這個看似普通的“準備工作”,實…

中宇聯云計算SD-WAN的售后服務怎么樣

前言在數字化轉型浪潮中,企業選擇SD-WAN服務商不僅關注技術性能,更看重售后服務的質量與可靠性。中宇聯云計算作為行業領先者,其SD-WAN售后服務體系已成為行業標桿。隨著全球數字化進程加速,企業對廣域網(WAN&#xff…

【Kubernetes】K8s 集群外服務配置 Service 訪問

在 Kubernetes 集群中,內部服務可通過 Service-name 進行訪問。那么,對于集群外的服務,Pod 應該如何通過 Service 進行訪問呢?一起來看看吧!此處舉例以 Pod 訪問集群外部的 Mysql 數據庫1、創建 Service# 創建 Service…

Linux 開發工具(1)

從開始講Linux,我們的目標絕不止于寫幾個命令這么簡單。我們的目的是在Linux系統上做開發。因此學習Linux的開發工具也是必不可少的。本章將重點講解:包管理器apt(CentOS叫yum,這里用ubuntu舉例),vim編輯器。一.包管理器apt1.安裝…

redis面試點記錄

1、主從復制psync-> runid->runid是?則是全量->返回fullresync和runid和復制進度->bgsave命令準備RDB文件->之后的命令寫入replication_buffer->發送RDB->發送replication_buffer的信息repl_backlog_buffer環型緩沖區,主節點只有一…

Elastic APM 與 Elasticsearch 集成:構建完整可觀測性棧

引言 Elastic APM 深度依賴 Elasticsearch 作為數據后端,但正確集成可以解鎖更強大的功能,如自定義查詢、聚合分析和與其它 Elastic 工具的協同。本文探討 APM 與 Elasticsearch 的集成細節,包括數據流、索引管理以及高級用例,幫助…

開源模型應用落地-基于DPO的Qwen3-4B意圖理解精準對齊實踐(二十)

一、前言 在大模型技術蓬勃發展的今天,如何讓AI真正“理解”用戶意圖,而非僅僅生成流暢文本,已成為落地應用的核心瓶頸。尤其是在客服、搜索、智能助手等場景中,模型對用戶query的深層語義解析能力,直接決定了交互體驗的成敗。然而,經過標準SFT(監督微調)訓練的模型,往…