從瀏覽器無法訪問到Docker容器的 FastAPI 服務地址【宿主機瀏覽器和容器不在同一個網絡層面:端口映射】

文章目錄

  • 1. 問題根源:Docker 網絡模型
  • 2. 解決方案:端口映射(Port Mapping)
    • 方法 1:重新運行容器并添加端口映射(推薦)
    • 方法 2:獲取宿主機的 IP 進行訪問(特定情況)
      • 📊 原理示意圖
      • 💎 總結

您遇到的問題非常典型,這是由 Docker 的網絡模型和容器隔離性導致的。172.17.0.2 是容器的內部私有 IP,無法從您宿主機的瀏覽器直接訪問。


1. 問題根源:Docker 網絡模型

hostname -I  # 容器內執行查看容器內ip地址
root@99686ef00ecc:/app# hostname -I
172.17.0.2

Docker 容器運行在一個獨立的虛擬網絡中(默認是 bridge 網絡)。172.17.0.2 是這個容器內部網絡的地址,只有以下對象可以訪問它:

  1. 同一 Docker 網絡下的其他容器
  2. Docker 宿主機本身(即您安裝 Docker 的那臺電腦或服務器)

您的宿主機瀏覽器和容器不在同一個網絡層面,因此無法直接通過這個私有 IP 通信。


2. 解決方案:端口映射(Port Mapping)

解決方案是在啟動容器時,將容器內部的端口 8000 映射到宿主機的一個端口上。這樣,訪問宿主機的該端口,流量就會自動轉發到容器內。

方法 1:重新運行容器并添加端口映射(推薦)

這是最標準、最正確的做法。

  1. 首先,退出當前容器(如果還在運行的話):

    exit
    
  2. 使用 -p 參數重新運行容器,進行端口映射

    # 語法:-p <宿主機端口>:<容器內部端口>
    docker run --rm -it -p 8000:8000 yolov8-cpu:latest /bin/bash
    
    • -p 8000:8000:將宿主機的 8000 端口映射到容器的 8000 端口。
    • 您可以將前面的 8000 改為宿主機任何未被占用的端口,例如 -p 9000:8000
  3. 在容器內啟動您的 FastAPI 服務

    python fastapi_yolo_detector2.py
    
  4. 現在,在您宿主機(電腦)的瀏覽器中訪問

    http://localhost:8000
    

    或者

    http://127.0.0.1:8000
    

    localhost127.0.0.1 都代表您的主機自身,現在通過端口映射,請求就會被轉發到容器里。

方法 2:獲取宿主機的 IP 進行訪問(特定情況)

有時您可能需要從局域網內其他設備訪問該服務。

  1. 首先,您需要查找到您宿主機在局域網中的真實 IP

    • Windows 宿主機:打開命令提示符,輸入 ipconfig,找到“以太網適配器”或“WLAN 適配器”下的 IPv4 地址
    • Linux/macOS 宿主機:打開終端,輸入 ifconfigip addr show,找到 eth0wlan0 下的 inet 地址。
  2. 假設您查到的宿主機 IP 是 192.168.1.100,并且您已經按方法 1 做好了端口映射 (-p 8000:8000)。

  3. 那么您可以在同一局域網下的任何設備的瀏覽器中訪問:

    http://192.168.1.100:8000
    

📊 原理示意圖

為了幫助您理解,可以看下面這個簡單的對比:

沒有端口映射 (docker run ...)有端口映射 (docker run -p 8000:8000 ...)
容器網絡隔離的私有網絡 (172.17.0.2:8000)隔離的私有網絡 (172.17.0.2:8000)
宿主機訪問無法訪問 ?通過 localhost:8000 可以訪問 ?
外部訪問無法訪問 ?通過 宿主機IP:8000 可以訪問 ?

💎 總結

  1. 根本原因172.17.0.2 是容器內網地址,宿主機瀏覽器無法直接訪問。
  2. 標準解決方案使用 -p 參數進行端口映射
  3. 正確訪問方式:在宿主機瀏覽器訪問 http://localhost:8000
  4. 重啟命令:請退出當前容器,使用 docker run -p 8000:8000 ... 重新啟動并映射端口。

請按此方法操作,您就能成功從瀏覽器訪問到 FastAPI 服務了。參考gpt。

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

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

相關文章

線性代數中矩陣等價與離散數學中關系的閉包之間的關聯

最近在重溫線性代數時&#xff0c;學到矩陣的等價的定義及其性質&#xff0c;發現其性質與離散數學中關系的閉包所要滿足的性質非常相似&#xff0c;不由的讓人不懷疑這二者之間存在某種關聯&#xff0c;從而引發以下的思考&#xff1a;從deepseek的回答中我明白了矩陣的等價其…

從MyJUnit反思Java項目的工程實踐(版本控制篇)

從 MyJUnit 反思Java項目的工程實踐(版本控制篇) 參考資料 deepseekgithub copilotCSDN-Git代碼管理工作流程&#xff1a;GitFlow詳解Conventional Commits手冊封面來自 qwen-image 遵循 git flow 分支管理模型 Git Flow 是一種圍繞項目發布的核心分支模型, 它規定了不同的開發…

小工具推薦

小工具 ? 平時不太喜歡去搜羅一些好用的工具&#xff0c;但是看到自己感興趣的還是會記下來&#xff0c;有的是github上的開源項目&#xff0c;有的是一些直接在線的工具。主要是除了工作時間也不知道去干點什么&#xff0c;或者是和朋友玩玩游戲&#xff0c;或者是city walk…

【js】加密庫sha.js 嚴重漏洞速查

前言sha.js 是 JavaScript 生態里最常用的輕量級加密庫。它由 Browserify 社區維護&#xff0c;體積不足 20 KB&#xff0c;卻實現了 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 全系列算法&#xff0c;是 crypto-browserify、webpack、web3.js 等數百個流行包的“根依賴”。而…

FPGA入門學習路徑

FPGA入門學習路徑 專業基礎 數電&#xff08;數字電路基礎-CSDN博客&#xff09; 語法 Verilog&#xff08;Verilog硬件描述語言-CSDN博客&#xff09; VHDL&#xff08;VHDL硬件描述語言-CSDN博客&#xff09; FPGA開發流程 常用接口設計 學習目的&#xff1a;通過簡單…

HTML響應式設計的顏色選擇器,適配各種屏幕尺寸

顏色選擇器 響應式設計的顏色選擇器&#xff0c;適配各種屏幕尺寸 支持色相滑塊和RGB數值兩種調色方式 點擊顏色值或復制按鈕即可復制十六進制顏色代碼 自動根據背景色調整文字顏色確保可讀性 包含復制成功提示動畫效果 現代化UI設計&#xff0c;采用圓角、陰影和漸變背景 完全…

ChatGPT登錄不進怎么辦?

ChatGPT登錄不進的核心原因分類ChatGPT登錄失敗并非單一問題導致&#xff0c;通常與網絡環境、賬號狀態、設備設置及平臺限制相關&#xff0c;不同場景下的故障表現與誘因存在明顯差異&#xff0c;可分為以下四類&#xff1a;網絡連接與地域限制&#xff1a;ChatGPT對訪問地域有…

【ConcurrentHashMap】實現原理和HashMap、Redis哈希的區別

【ConcurrentHashMap】實現原理和HashMap、Redis哈希的區別【一】核心思想【1】HashMap?&#xff08;1&#xff09;概括&#xff08;2&#xff09;&#x1f680;線程不安全的場景和原因1-場景一&#xff1a;Put 操作導致的數據覆蓋/丟失 (Lost Update)??2-場景二&#xff1a…

Android 中使用開源庫 ZXing 生成二維碼圖片

在 Android 中生成二維碼是一個比較常見的功能&#xff0c;可以使用開源庫 ZXing&#xff08;Zebra Crossing&#xff09;庫來實現&#xff0c;這是一個非常流行的二維碼生成和掃描庫。 1、添加依賴庫 在 app/build.gradle.kt 中添加依賴庫。 dependencies { ......implementat…

vue 如何使用 vxe-table 來實現跨表拖拽,多表聯動互相拖拽數據

vue 如何使用 vxe-table 來實現跨表拖拽&#xff0c;多表聯動互相拖拽數據 row-drag-config.isCrossTableDrag 啟用跨表格、多表格互相拖拽&#xff1b;跨表拖拽需要確保數據主鍵不重復&#xff0c;通過 row-config.keyField 指定主鍵字段名 查看官網&#xff1a;https://vxe…

微生產力革命:AI解決生活小任務分享會

微生產力革命的概念微生產力革命指利用AI技術高效解決日常瑣碎任務&#xff0c;釋放時間與精力。其核心在于將重復性、低價值的事務自動化&#xff0c;聚焦創造性或高價值活動。AI解決生活小任務的典型場景健康管理 AI健身助手可定制個性化訓練計劃&#xff0c;通過攝像頭實時糾…

標量、向量、矩陣和張量的區別

注&#xff1a;本文為 “標量、向量、矩陣和張量的區別” 相關合輯。 英文引文&#xff0c;機翻未校。 如有內容異常&#xff0c;請看原文。 Difference Between Scalar, Vector, Matrix and Tensor 標量、向量、矩陣和張量的區別 Last Updated : 06 Aug, 2025 In the conte…

VScode,設置自動保存

在搜索框輸入“autoSave”或VSCode提供以下自動保存選項&#xff1a; 在搜索框輸入“autoSave” Off&#xff1a;禁用自動保存。 On Focus Change&#xff1a;當您將焦點從編輯器移開時自動保存。 On Window Change&#xff1a;當您切換窗口選項卡或編輯器時自動保存。 After D…

2025.8.27鏈表_鏈表逆置

鏈表中的指針只是用來標記&#xff0c;具體連接方式&#xff0c;是按照node.next鏈接。JAVA中頭節點存東西&#xff0c;不是空的。核心原理&#xff1a;Java 的參數傳遞是"值傳遞"&#xff0c;但對象引用是"值傳遞引用"也就是傳過來了ListNode head。headh…

ssc37x平臺的音頻應用demo

//ao_test.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include

PPT處理控件Aspose.Slides教程:在.NET中開發SVG到EMF的轉換器

SVG和EMF都是基于矢量的格式。許多傳統的 CAD 和報告工具仍然傾向于使用 EMF 文件格式&#xff0c;因為它具有更廣泛的兼容性。如果您正在開發一個 .NET 項目&#xff0c;并希望實現自動化&#xff0c;使 SVG 到 EMF 的轉換變得輕松便捷。Aspose.Slides for .NET是一個功能強大…

深入理解HTTP:請求、響應與狀態碼解析

深入理解HTTP&#xff1a;請求、響應與狀態碼解析一&#xff1a;概述二&#xff1a;協議版本三&#xff1a;協議詳解1&#xff09;請求報文2&#xff09;響應報文四&#xff1a;狀態碼1&#xff09;1xx&#xff1a;信息狀態碼2&#xff09;2xx&#xff1a;成功狀態碼3&#xff…

瀏覽器輸入網址回車后,訪問網頁全流程解析!

你在地址欄敲下 https://baidu.com.com 并回車&#xff0c;幾百毫秒內發生了很多事&#xff1a;瀏覽器先想“這個域名的 IP 我記得嗎”&#xff0c;接著去找 DNS&#xff1b;建立連接時還要握個手&#xff08;TCP/QUIC&#xff09;順便打個招呼&#xff08;TLS 證書校驗、ALPN …

[Linux]學習筆記系列 -- mm/percpu

文章目錄mm/percpu.c Per-CPU Variables Management Per-CPU數據管理的核心實現歷史與背景這項技術是為了解決什么特定問題而誕生的&#xff1f;它的發展經歷了哪些重要的里程碑或版本迭代&#xff1f;目前該技術的社區活躍度和主流應用情況如何&#xff1f;核心原理與設計它的…

企微會話風控「智腦」:源雀SCRM的AI合規守護引擎

一&#xff1a;功能概述源雀SCRM會話風控功能是一款專為企業客戶關系管理設計的智能風控解決方案&#xff0c;通過雙重審計機制保障企業會話合規性&#xff0c;發送違規內容及時提醒通知企業負責人。二&#xff1a;核心功能1. 普通風控審計基于Lucene全文關鍵詞檢索&#xff1a…