文章目录

  • 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…