ホームページ > バックエンド開発 > 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 に壊れたことが通知されました。FATA[0000] rpc エラー: コード = 内部記述 = トランスポートが閉じています。

説明:

デフォルトでは、ローカルホスト アドレス (「127.0.0.1」) でリッスンする GRPC サーバーは、同じマシン内からのみアクセスできます。 容器。サーバーが Docker コンテナ内で実行される場合、コンテナの外部からアクセスできない別の IP アドレスが割り当てられます。

解決策:

この問題を解決するには、GRPC サーバーは、「localhost:51672」ではなくワイルドカード アドレス (「:51672」) にバインドする必要があります。これにより、サーバーはコンテナに関連付けられたすべての IP アドレスをリッスンできるようになり、コンテナの外部のクライアントからアクセスできるようになります。

Docker ネットワーキング:

Docker コンテナ内のポート (この場合は 51672) を使用すると、Docker はホスト マシンの IP アドレスから受信したトラフィックを転送するための iptables ルールを作成します。 (127.0.0.1) をコンテナの内部 IP アドレスに追加します。ただし、サーバーが「localhost:51672」でリッスンしている場合、ホスト マシンからではなく、コンテナ内からのみアクセスできます。

追加情報:

  • 「-p」を使用して Docker コンテナ内のポートを公開すると、コンテナの内部 IP アドレスがホスト マシンの IP にマップされますaddress.
  • Docker によって作成された iptables ルールは、コマンド「iptables -n -L」および「iptables -t nat -n -L」を使用して表示できます。

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

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