【解決方法】コンテナが期待どおりに機能しない


Dot net アプリケーションをローカルで実行すると、URL http://localhost:59901 で起動され、このアプリケーションを Dockerize しようとしています。 以下は docker ファイルです。docker ファイルのこれらの行の前にすべての依存イメージをプルしました。

ENV DOTNET_URLS=http://+:80
COPY bin/Release/netcoreapp2.1/publish/ /opt/Pcit/common
WORKDIR /opt/Pcit/common
ENTRYPOINT ["./pcit/common"]
EXPOSE 8080

このコマンドを使用して docker イメージをビルドしました

Docker build -t common:v1 .

以下のコマンドでコンテナを実行します

Docker run -p 8080:8080 imageid

Docker デスクトップでは、コンテナが http://localhost/5000 をリッスンしていることがわかりますが、これはどこにも宣言していません
ブラウズしようとすると、期待どおりに動作しません

これらのポートがどのように機能するのか、またこのコンテナをどのように機能させることができるのか混乱しています。

助けてください。 前もって感謝します。

私が試したこと:

<pre>ENV DOTNET_URLS=http://+:80
COPY bin/Release/netcoreapp2.1/publish/ /opt/Pcit/common
WORKDIR /opt/Pcit/common
ENTRYPOINT ["./pcit/common"]
EXPOSE 8080
<pre>Docker build -t common:v1 .
<pre>Docker run -p 8080:8080 imageid

解決策 1

「EXPOSE 8080」は、アプリケーションがポート 8080 で受信ネットワーク トラフィックをリッスンすることを示します。

localhost で実行している場合、:59901 ポートがリッスンしていました。これは、すでにポート 8080 を使用している別のアプリケーションがあることを意味します。ポート番号を変更するか、他のアプリケーションを停止してください。

どのアプリがどのポートを使用しているかを確認するには –
MS Windows では、[スタート]>[すべてのプログラム]>[アクセサリ]>[システム ツール]>[リソース モニター]を選択します。

「ネットワーク」タブを展開します

リスニングポートのセクションに移動します。

[ポート]列を確認し、スクロールしてポート 8080 のエントリを見つけます。

特定のプロセスを選択し、プロセスを削除/強制終了するか、アプリのポート番号を変更します。

補足として、コンテナ内のポートを公開するだけでは、自動的にアクセス可能になるわけではないことに注意してください。 受信トラフィックがコンテナーの公開ポートに到達できるようにするには、ネットワーク バインディングとファイアウォール ルールを構成する必要があります。

コメント

タイトルとURLをコピーしました