公開された Docker ポートにアクセスできないのはなぜですか? - Go アプリケーションの「受信失敗: ピアによって接続がリセットされました」のトラブルシューティング

Patricia Arquette
リリース: 2024-11-19 14:17:02
オリジナル
1001 人が閲覧しました

Why Can't I Access My Exposed Docker Port? - Troubleshooting

Docker ポート公開の失敗: 「受信失敗: ピアによる接続のリセット」の解決

Docker コンテナ内で Go アプリケーションを実行しようとしたとき、公開ポートにアクセスすると、「受信失敗: ピアによって接続がリセットされました」というエラーが発生します。 docker-compose.yaml ファイルでポート マッピングが正しく構成されているにもかかわらず、アプリケーションは外部ソースからアクセスできないままです。

この問題の根本原因は、Go アプリケーションが受信リクエストをリッスンする方法にあります。デフォルトでは、Go アプリケーションは構文 http.ListenAndServe("localhost:8081", nil) を使用する場合、ローカル ループバック インターフェイス ("localhost") にバインドします。

解決策:

Docker コンテナ内では、Go アプリケーションはループバック インターフェイスに制限するのではなく、利用可能なすべてのインターフェイスをリッスンする必要があります。これを実現するには、Go アプリケーションで次のコードを変更します。

// Original code
http.ListenAndServe("localhost:8081", nil)

// Updated code
http.ListenAndServe(":8081", nil)
ログイン後にコピー

「localhost」プレフィックスを削除することで、アプリケーションはループバック インターフェイスと外部ソースの両方からの接続を受け入れるようになります。この変更により、docker-compose.yaml ファイルでポートを公開した後にアプリケーションにアクセスできるようになります。

以上が公開された Docker ポートにアクセスできないのはなぜですか? - Go アプリケーションの「受信失敗: ピアによって接続がリセットされました」のトラブルシューティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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