You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker端口映射后Host端curl报(56) Recv failure问题求助

问题原因分析及验证方案

最可能的原因:Dream服务仅绑定容器本地回环地址(127.0.0.1)

Ocaml/Dream框架默认启动时,服务会绑定到127.0.0.1(容器内部的localhost),而非容器的对外网络接口地址(0.0.0.0)。这种情况下:

  • 容器内部通过localhost:8080访问时,请求直接命中回环地址,所以正常;
  • 主机通过端口映射8084:8080访问时,Docker会把主机的请求转发到容器的0.0.0.0:8080,但服务根本没监听这个地址,导致连接被重置。

验证方法

在容器内执行以下命令,查看服务监听的地址:

ss -tulpn | grep 8080

如果输出显示监听地址是127.0.0.1:8080,而非0.0.0.0:8080,则确认是这个问题。

解决方式

修改你的Dream服务代码,启动时指定监听所有接口:

(* 根据实际启动逻辑调整示例代码 *)
Dream.run ~interface:"0.0.0.0" ~port:8080 my_handler

或者使用Dream.serve时指定接口:

Dream.serve ~interface:"0.0.0.0" ~port:8080 my_handler

其他可能性较低的原因

  • 主机防火墙/iptables规则异常:虽然Nginx容器正常,但极少数情况下,Dream服务的网络包特征可能被主机防火墙拦截。可临时关闭主机防火墙测试(如systemctl stop firewalld),若问题解决,需调整防火墙规则允许Docker端口转发的流量。
  • Docker网络命名空间配置问题:个别情况下容器的网络命名空间存在异常,可尝试重新构建镜像或删除现有容器后重新创建,排除临时配置问题。

内容的提问来源于stack exchange,提问作者Abdelghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:45:59