问题:
当尝试连接到在 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”,则只能从容器内访问它,而不能从主机访问。
其他信息:
以上是为什么无法连接到 Docker 容器中的 Go gRPC 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!