首页 > 后端开发 > Golang > 为什么无法连接到 Docker 容器中的 Go gRPC 服务器?

为什么无法连接到 Docker 容器中的 Go gRPC 服务器?

Patricia Arquette
发布: 2024-12-21 07:23:13
原创
282 人浏览过

Why Can't I Connect to My Go gRPC Server in a Docker Container?

GRPC 连接错误故障排除:“无法连接到在本地 Docker 容器中运行的 Go GRPC 服务器”

问题:

当尝试连接到在 Docker 容器中运行的 Go GRPC 服务器时,出现错误“transport: http2Client.notifyError 收到客户端传输损坏的通知 EOF[0000] rpc 错误:代码 = 内部 desc = 传输正在关闭”。

解释:

默认情况下,监听本地主机地址(“127.0.0.1”)的 GRPC 服务器只能从同一台机器或 容器。当服务器在 Docker 容器中运行时,它会被赋予一个单独的 IP 地址,无法从容器外部访问该地址。

解决方案:

解决此问题,GRPC 服务器应该绑定到通配符地址(“:51672”)而不是“localhost:51672”。这将允许服务器侦听与容器关联的所有 IP 地址,从而使容器外部的客户端可以访问它。

Docker 网络:

当公开Docker 容器中的端口(本例中为 51672),Docker 创建 iptables 规则以将来自主机 IP 地址 (127.0.0.1) 的传入流量转发到容器的内部IP地址。但是,如果服务器正在侦听“localhost:51672”,则只能从容器内访问它,而不能从主机访问。

其他信息:

  • 使用“-p”暴露 Docker 容器中的端口会将容器的内部 IP 地址映射到主机的 IP地址。
  • Docker 创建的 iptables 规则可以使用命令“iptables -n -L”和“iptables -t nat -n -L”查看。

以上是为什么无法连接到 Docker 容器中的 Go gRPC 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板