根本原因是服务监听地址未设为0.0.0.0且docker端口未正确映射:需在启动命令中添加--host 0.0.0.0(gradio用--server-name 0.0.0.0),docker运行时必须使用-p 7860:7860,并确保防火墙放行7860端口。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Docker容器内部署的腾讯混元服务(如Hunyuan-OCR、HY-MT或HunyuanImage)对外提供HTTP访问能力,但宿主机始终无法通过http://localhost:7860或http://192.168.x.x:7860访问到服务,根本原因是容器网络配置与服务绑定地址不匹配。
确认服务监听地址是否为0.0.0.0
进入容器内部,用ps aux | grep python查出启动服务的命令,重点看是否包含--host 0.0.0.0或--host=0.0.0.0参数。若只写了--host 127.0.0.1或没写--host,服务默认只监听本地回环,外部请求会被直接拒绝。
例如Gradio服务必须显式加--server-name 0.0.0.0;FastAPI需指定uvicorn.run(..., host="0.0.0.0");Hunyuan-OCR的api_server.py里若漏掉host="0.0.0.0",即使端口映射正确也收不到请求。
检查Docker run命令中的-p参数格式
方法一:标准端口映射
运行容器时必须使用-p 7860:7860而非-p 7860——后者是随机端口绑定,宿主机实际分配的端口要靠docker port <container_id></container_id>查,容易误判。
方法二:多端口映射(适用于OCR API双端口场景)
若服务同时暴露8000(vLLM)和7860(WebUI),应写成-p 8000:8000 -p 7860:7860。漏掉任一端口,对应功能就不可达。
【关键前提】宿主机防火墙必须放行目标端口,Ubuntu请执行sudo ufw allow 7860;CentOS用sudo firewall-cmd --add-port=7860/tcp --permanent && sudo firewall-cmd --reload。
docker-compose.yml中network_mode与ports的配合
第一步:确保ports字段存在且格式正确
在services.hunyuan-ocr.ports下写明- "7860:7860",注意引号不能丢,否则YAML解析失败导致端口未映射。
第二步:禁用host网络模式除非必要
若配置了network_mode: "host",则容器直接共享宿主机网络栈,此时ports字段失效,服务必须监听0.0.0.0:7860且宿主机防火墙放行——但该模式会绕过Docker网桥,造成端口冲突风险,普通部署不推荐。
第三步:验证容器内服务真实监听状态
执行docker exec -it <container_name> ss -tlnp | grep :7860</container_name>,输出中必须含0.0.0.0:7860或*:7860,若只有127.0.0.1:7860说明服务未正确绑定。











