web-dev-qa-db-ja.com

WindowsコンテナのコンソールアプリまたはWindowsサービス?

.net4.5を使用してServer2016CTP5でWindowsコンテナーベースのマイクロサービスを構築しようとしています。

コンテナー以外の世界では、キューにサブスクライブしてその作業を実行するWindowsサービスとしてデプロイされたコンソールアプリを使用しています。

コンテナ内では、コンソールアプリを実行するだけで、問題なく実行されるようです。 Windowsサービスとしてインストールする必要がありますか?

9
TalMcMahon

いいえ、サービスとしてインストールする必要はありません。コンテナーでアプリケーションを実行すると、Dockerはコンテナー内のアクティブなプロセスを監視します。アクティブなプロセスが停止すると、コンテナは終了します。したがって、アプリをフォアグラウンドで実行し、Dockerにコンテナーをバックグラウンドに配置させる必要があります(docker run -dで開始します)。

例外は、既存のプラットフォームがすでにWindowsサービスである場合です。 Microsoft/iis イメージ。 IISはコンテナーのバックグラウンドで実行されているため、コンテナーを実行し続けるために別のプロセスを開始する必要があります-これが、IISコンテナーが次のように開始された理由です。この:

docker run -d -p 80:80 Microsoft/iis ping -t localhost

pingコマンドはコンテナの実行を維持し、IISサービスは実際に要求に応答します。これは理想的ではありませんが、Dockerはpingを監視しているため、= IISサービスは、コンテナーの実行を停止します。

16
Elton Stoneman