ホームページ >バックエンド開発 >Golang >Docker コンテナがマップされたポートにアクセスすると「受信失敗: ピアによって接続がリセットされました」というメッセージが表示されるのはなぜですか?

Docker コンテナがマップされたポートにアクセスすると「受信失敗: ピアによって接続がリセットされました」というメッセージが表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 10:54:12200ブラウズ

Why Does My Docker Container Throw

Docker ポート公開の問題: 「受信失敗: ピアによって接続がリセットされました」エラー

内で Go アプリのバイナリを実行しようとするとエラーが発生するDocker コンテナーを作成し、マップされたポート経由でそれにアクセスすると、「受信失敗: ピアによる接続のリセット」エラーが発生する場合があります。これは、ポート マッピングまたはアプリケーションの内部構成に問題があることを示しています。

この問題は、アプリケーションが gRPC リスニング エンドポイントに「localhost:8081」のような IP アドレスを指定した場合に発生します。コンテナ内で実行する場合、この設定ではコンテナ自体内からの接続のみが許可されます。

解決策: ホスト全体のリスニングを使用する

この問題を解決するには、次の設定を行う必要があります。アプリケーションを「localhost」ではなく、利用可能なすべてのホスト インターフェイスにバインドします。これは、リッスン呼び出しで IP アドレスを単に省略するだけで実現できます。

http.ListenAndServe(":8081", nil)

これを行うと、アプリケーションはポート 8081 を持つすべてのインターフェイスでのリッスンを開始し、コンテナー内外からの接続を許可します。これにより問題が解決され、gRPC エンドポイントへの外部アクセスが可能になります。

以上がDocker コンテナがマップされたポートにアクセスすると「受信失敗: ピアによって接続がリセットされました」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。