ホームページ > バックエンド開発 > Golang > gRPC クライアントが Docker コンテナ内の Go サーバーに接続できないのはなぜですか?

gRPC クライアントが Docker コンテナ内の Go サーバーに接続できないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-21 11:55:12
オリジナル
888 人が閲覧しました

Why Does My gRPC Client Fail to Connect to a Go Server in a Docker Container?

ローカル Docker コンテナで実行されている Go GRPC サーバーに接続しています

問題:

試行時gRPC クライアントを Docker コンテナ内で実行されている Go gRPC サーバーに接続すると、エラーが発生します。発生した問題:

transport: http2Client.notifyError got notified that the client transport was broken EOF.
FATA[0000] rpc error: code = Internal desc = transport is closing
ログイン後にコピー

解決策:

この問題は、gRPC サーバーが特定のホスト名または IP アドレス (localhost など) をリッスンするように構成されている場合に発生します。 Docker 内では、ローカルホスト アドレスは、コンテナ自体内から発信されるループバック接続のみを参照します。

この問題を解決するには、コンテナの使用可能なすべての IP アドレスをリッスンするようにサーバーを構成する必要があります。これを実現するには、リッスン エンドポイントを

endpoint := "localhost:51672"
ログイン後にコピー

から

endpoint := ":51672"
ログイン後にコピー

に変更します。リッスン アドレスとして「:」を使用すると、サーバーはすべてのインターフェイスと IP にバインドされます。コンテナ内のアドレスを使用して、外部接続の転送と確立を可能にします。

追加情報:

  • Docker は、コンテナ内の公開ポートに接続を転送するための iptables ルールを作成します。
  • コンテナに割り当てられた IP アドレスは、コマンド ip addr ls を使用して表示できます。
  • コンテナ内でクライアントを実行する場合、クライアントとサーバーの両方が同じネットワーク内にあるため、サーバーに正常に接続できます。インターフェース。

以上がgRPC クライアントが Docker コンテナ内の Go サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート