首页 >后端开发 >Golang >为什么我无法连接到 Docker 中的 gRPC 服务:'接收失败:连接被对等方重置”?

为什么我无法连接到 Docker 中的 gRPC 服务:'接收失败:连接被对等方重置”?

Patricia Arquette
Patricia Arquette原创
2024-11-16 04:36:03598浏览

Why Can't I Connect to My gRPC Service in Docker:

Docker 端口暴露问题:解决“接收失败:连接被对等方重置”

在 Docker 环境中,您遇到了问题当尝试公开在容器中运行的 gRPC 服务时。侦听端口 8081 的服务无法接收连接,并出现错误“接收失败:连接已被对等方重置。”

您的 Docker Compose 配置正确地将端口 8081 映射到容器的内部端口,但出现此问题是由于gRPC 服务器绑定到其侦听地址的方式。默认情况下,当使用“http.ListenAndServe("localhost:8081", nil)”时,服务器仅侦听环回接口 (127.0.0.1)。这意味着它只能接受来自容器本身内部的连接。

要解决此问题,您可以修改 Go 应用程序以侦听所有接口。这可以通过使用以下代码来实现:

http.ListenAndServe("0.0.0.0:8081", nil)

通过指定“0.0.0.0”,服务器将绑定到所有网络接口,从而允许它接受环回和外部连接。这将确保来自容器外部的请求可以到达您的 gRPC 服务。

附加说明:

  • 如果您使用 Kubernetes 来管理 Docker 容器,确保暴露端口 8081 的服务配置了正确的 NetworkPolicy 以允许传入流量。
  • 如果在进行上述更改后仍然遇到问题,请考虑检查您的防火墙设置,以确保该端口对传入连接开放.

以上是为什么我无法连接到 Docker 中的 gRPC 服务:'接收失败:连接被对等方重置”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn