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

Docker部署Golang应用curl报(56)Connection reset by peer问题

报错原因

核心问题是Go服务的监听地址配置不符合容器网络规则,和Docker端口映射配置无关,你当前写的-p 7000:8007端口映射规则本身是正确的。
代码里把服务监听地址设置为localhost:8007时,服务只会绑定容器内部的回环网卡(127.0.0.1),仅能接收容器内部从回环地址发起的请求。而Docker端口映射的转发逻辑,是把宿主机7000端口收到的请求转发到容器虚拟网卡对应的IP的8007端口上,不会走容器内部的回环地址。此时服务没有在容器对外的虚拟网卡上监听8007端口,收到转发过来的请求时会直接重置连接,最终触发curl: (56) Recv failure: Connection reset by peer报错。

修复步骤
  1. 修改main.go中的服务监听地址配置,将localhost:8007替换为0.0.0.0:8007,修改后的核心代码如下:
...
srv := &http.Server {
Handler: router,
Addr:    "0.0.0.0:8007",
}
...

配置为0.0.0.0代表服务会绑定容器内所有可用网卡,既包含本地回环网卡,也包含Docker分配的虚拟网卡,可以正常接收端口映射转发的外部请求。
2. 重新构建镜像并启动容器:

  • 重新构建应用镜像:docker build -t sample_go .
  • 删除之前启动的异常容器:docker rm -f sample_go_app
  • 按原有端口映射规则启动新容器:docker run --name sample_go_app -p 7000:8007 sample_go

完成后执行curl http://localhost:7000即可正常访问服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:45:44