主機IP動態變化時如何通過固定host.docker.internal訪問本機服務

場景需求——主機IP動態變化時,通過固定的 http://host.docker.internal:11555 訪問本機服務,核心問題在于 host.docker.internal 的解析邏輯與動態IP的適配。以下是分步解決方案:

一、核心原理:host.docker.internal 的本質與局限性

  • 解析邏輯
    在 Docker Desktop(Windows/macOS)中,host.docker.internal 解析為 Docker虛擬網絡的網關IP(如 192.168.65.254),而非主機物理網卡的動態IP(如 192.168.0.5192.168.43.142)。當主機接入不同網絡時,物理IP變化,但虛擬網絡網關IP可能固定,導致無法直接映射到動態物理IP。

  • 需求轉化
    你需要讓 host.docker.internal:11555 始終指向 主機當前的物理IP:11555,無論物理IP如何變化。

二、解決方案:通過Docker網絡模式與端口映射實現動態適配

方案 1:使用 host 網絡模式(最直接)

讓容器直接共享主機的網絡命名空間,容器的IP、端口與主機完全一致,無需NAT轉換。
操作步驟

  1. host 模式啟動容器

    docker run --network=host -d --name your-container \-p 11555:11555 \  # 端口映射(可選,host模式下可省略)your-image:tag
    
    • 關鍵作用
      • 容器內的 host.docker.internal 會直接解析為主機的物理IP(如 192.168.0.5 或當前網絡的IP)。
      • 容器與主機共享同一網絡接口,端口映射無需轉換,直接訪問主機的 11555 端口。
  2. 驗證訪問

    • 主機接入新網絡后,容器內執行 ping host.docker.internal,應返回當前物理IP(如 192.168.XXX.XXX)。
    • 外部設備通過 http://<當前物理IP>:11555http://host.docker.internal:11555 均可訪問服務。
方案 2:通過環境變量動態獲取主機IP(橋接模式)

若需保持容器在默認橋接網絡(非 host 模式),可通過 Docker 內置變量或腳本動態獲取主機IP并配置。
操作步驟

  1. 獲取主機物理IP
    在主機上,通過腳本獲取當前活動網卡的IP(以Windows為例):

    $ip = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -match "WLAN" }).IPAddress
    

    (替換 WLAN 為你的活動網卡名稱)

  2. 將IP注入容器
    啟動容器時通過環境變量傳遞IP:

    docker run -d --name your-container \-e HOST_IP=$ip \  # 傳遞主機IP到容器-p 11555:11555 \your-image:tag
    
  3. 容器內配置反向代理
    在容器內的服務配置中(如Nginx),使用 $HOST_IP:11555 作為目標地址,確保請求轉發到主機當前IP。

三、核心配置:確保 host.docker.internal 指向動態IP

關鍵網絡配置對比
網絡模式host.docker.internal 解析結果優勢適用場景
host 模式主機當前物理IP(如 192.168.XXX.XXX零配置,自動適配動態IP快速開發、單容器依賴主機網絡
橋接模式Docker虛擬網絡網關IP(固定不變)容器網絡隔離多容器集群、需網絡隔離

推薦 host 模式:無需額外配置,直接解決動態IP問題,且 host.docker.internal 會自動映射到主機當前物理IP。

四、防火墻與端口映射驗證

  1. Windows防火墻設置

    • 允許 11555 端口入站/出站(TCP/UDP),作用于所有網絡接口。
    • 確保Docker進程(com.docker.service)有網絡訪問權限。
  2. 端口映射驗證

    docker port your-container 11555  # 應顯示主機所有IP的11555端口映射
    

    若使用 host 模式,此命令會顯示 0.0.0.0:11555,表示端口已暴露到所有網絡接口。

五、總結:終極方案

  1. 首選 host 網絡模式

    docker run --network=host -d your-image:tag
    

    容器與主機完全共享網絡,host.docker.internal 自動解析為主機當前物理IP,徹底解決動態IP問題。

  2. 備用方案:域名解析覆蓋(橋接模式下):
    在容器內修改 /etc/hosts,強制將 host.docker.internal 指向主機動態IP(需配合腳本實時更新):

    echo "192.168.XXX.XXX host.docker.internal" >> /etc/hosts
    

通過以上方法,無論主機接入哪個網絡,http://host.docker.internal:11555 都會正確指向當前物理IP的11555端口,實現真正的動態適配。

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

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

相關文章

插值算法 - 最近鄰插值實現

目錄 1. 導入必要的庫 2. nearest_neighbor_interpolation 3. 測試代碼 數學原理 完整代碼 本文實現了基于最近鄰插值算法的圖像縮放功能。 它使用 Python 編寫,主要依賴于NumPy和PIL(Python Imaging Library)庫。 NumPy用于高效的數值計算,而PIL僅用于圖像的加載和…

windows中搭建Ubuntu子系統

windows中搭建虛擬環境 1.配置2.windows中搭建Ubuntu子系統2.1windows配置2.1.1 確認啟用私有化2.1.2 將wsl2設置為默認版本2.1.3 確認開啟相關配置2.1.4重啟windows以加載更改配置 2.2 搭建Ubuntu子系統2.2.1 下載Ubuntu2.2.2 遷移位置 3.Ubuntu子系統搭建docker環境3.1安裝do…

MySQL事務機制

目錄 原子性 持久性 隔離性 隔離級別(并發事務之間的關系) 讀未提交 讀已提交 可重復讀 串行化(最嚴格的隔離級別) 一致性 問題 不可重復讀性(已經提交的數據) 什么是臟讀問題(未提交的數據)? 幻讀 保存點 自動提交機制--autocommit 會話隔離級別與全局隔離級…

Cadence學習筆記之---直插元件的封裝制作

目錄 01 | 引 言 02 | 環境描述 03 | 操作步驟 04 | 結 語 01 | 引 言 在之前發布的Cadence小記中&#xff0c;已經講述了怎樣制作熱風焊盤&#xff0c;貼片(SMD)焊盤、通孔、過孔&#xff0c;以及貼片元件的封裝。 本篇關于Cadence的小記主要講如何制作直插元件的封裝。 …

【第四十周】文獻閱讀:用于檢索-增強大語言模型的查詢與重寫

目錄 摘要Abstract用于檢索-增強大語言模型的查詢與重寫研究背景方法論基于凍結LLM的重寫方案基于可訓練重寫器的方案重寫器預熱訓練&#xff08;Rewriter Warm-up&#xff09;強化學習&#xff08;Reinforcement Learning&#xff09; 創新性實驗結果局限性總結 摘要 這篇論文…

java學習總結(if switch for)

一.基本結構 1.單分支if int num 10; if (num > 5) {System.out.println("num 大于 5"); } 2.雙分支if-else int score 60; if (score > 60) {System.out.println("及格"); } else {System.out.println("不及格"); } 3.多分支 int…

yum的基本操作和vim指令

在我們的手機端或者Windows上下載軟件&#xff0c;可以在相應的應用商店或者官網進行下載&#xff0c;這樣對于用戶來說十分的方便和便捷。而在Linux上&#xff0c;也有類似的安裝方式&#xff0c;我們來一一了解一下。 Linux安裝軟件的3種方法 源代碼安裝 在Linux下安裝軟件…

C++ CUDA開發入門

CUDA開發筆記 文章目錄 CUDA開發筆記[toc]1 概述2 環境3 命令行編譯4 CMAKE引入CUDA5 vscode開發CUDA6 Qt中使用CUDA-CMake7 QMake配置CUDA8 核函數9 核函數調用9.1 核函數調用語法9.2 執行配置參數詳解9.3 關鍵調用步驟9.4 重要注意事項9.5 調用示例分析9.6 最佳實踐建議 10 線…

llm開發框架新秀

原文鏈接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google開源ADK-Agent Development Kit 開源的、代碼優先的 Python 工具包&#xff0c;用于構建、評估和部署具有靈活性和控制力的復雜智能體項目倉庫:https://github.com/google/adk-python 2.6k項目文檔:Age…

VM——相機拍照失敗

1、問題&#xff1a;相機頻閃觸發&#xff0c;在MVS中正常出圖&#xff0c;在VM中出現拍照失敗 2、解決&#xff1a; 1、首先排查網絡設置&#xff08;巨幀是否設置&#xff09; 2、電腦的所有防火墻是否關閉 3、在MVS中恢復相機的設置參數為默認參數&#xff0c;刪除VM中的全…

【時頻譜分析】小波分析

算法配置頁面&#xff0c;也可以一鍵導出結果數據 報表自定義繪制 獲取和下載【PHM學習軟件PHM源碼】的方式 獲取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

怎么免費下載GLTF/GLB格式模型文件,還可以在線編輯修改

? 現在非常流行glb格式模型&#xff0c;和gltf格式文件&#xff0c;可是之類模型網站非常非常少 1&#xff0c;咱們先直接打開http://glbxz.com 官方glb下載網站 glbxz.com 2 可以搜索&#xff0c;自己想要的模型關鍵詞 3&#xff0c;到自己想下載素材頁面 4&#xff0c;…

【6】深入學習http模塊(萬字)-Nodejs開發入門

深入學習http模塊 前言http一個Web服務器項目創建代碼運行代碼解析 Server屬性&#xff1a;keepAlive屬性&#xff1a;keepAliveTimeout屬性&#xff1a;maxHeaderSize屬性&#xff1a;requestTimeout屬性&#xff1a;maxRequestsPerSocket方法&#xff1a;close()方法&#xf…

buuctf sql注入類練習

BUU SQL COURSE 1 1 實例無法訪問 / Instance cant be reached at that time | BUUCTF但是這個地方很迷惑就是這個 一個 # 我們不抓包就不知道這個是sql注入類的判斷是 get 類型的sql注入直接使用sqlmap我們放入到1.txt中 目的是 優先檢測 ?id1>python3 sqlmap.py -r 1.t…

(即插即用模塊-特征處理部分) 三十二、(TGRS 2024) MDAF 多尺度雙表示對齊過濾器

文章目錄 1、Multiscale Dual-Representation Alignment Filter2、代碼實現 paper&#xff1a;SFFNet: A Wavelet-Based Spatial and Frequency Domain Fusion Network for Remote Sensing Segmentation Code&#xff1a;https://github.com/yysdck/SFFNet 1、Multiscale Dual-…

Python 中為什么 hash(-1) == hash(-2)?

推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰目錄 讓我們從哪里開始?獲取源代碼!讓我們瀏覽一下這是正確/完整的答案嗎?結論前幾天在瀏覽 Reddit 時,我在 r/Python 上看到了這樣一個…

基于PySide6與pycatia的CATIA繪圖比例智能調節工具開發全解析

引言&#xff1a;工程圖紙自動化處理的技術革新 在機械設計領域&#xff0c;CATIA圖紙的比例調整是高頻且重復性極強的操作。傳統手動調整方式效率低下且易出錯。本文基于PySide6pycatia技術棧&#xff0c;提出一種支持智能比例匹配、實時視圖控制、異常自處理的圖紙批處理方案…

macos下 ragflow二次開發環境搭建

參考官網鏈接 https://ragflow.io/docs/dev/launch_ragflow_from_source虛擬環境 git clone https://github.com/infiniflow/ragflow.git cd ragflow/ # if not pipx, please install it at first pip3 install pipxpipx install uv uv sync --python 3.10 --all-extras 安裝 …

libva之ffavdemo分析

ffavdemo 代碼庫實現了一個基于FFmpeg和VAAPI的硬件加速視頻解碼與渲染框架&#xff0c;主要用于演示視頻解碼與渲染的完整硬件加速流程。支持多種渲染后端&#xff08;X11、DRM、EGL&#xff09;&#xff0c;適應不同顯示環境。包含視頻處理過濾器&#xff0c;可進行格式轉換和…

JavaWeb 課堂筆記 —— 09 MySQL 概述 + DDL

本系列為筆者學習JavaWeb的課堂筆記&#xff0c;視頻資源為B站黑馬程序員出品的《黑馬程序員JavaWeb開發教程&#xff0c;實現javaweb企業開發全流程&#xff08;涵蓋SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章節分布參考視頻教程&#xff0c;為同樣學習…