.net 4.5 を使用して、Server 2016 CTP5 で Windows コンテナー ベースのマイクロ サービスを構築しようとしています。
コンテナー以外の世界では、キューにサブスクライブしてその作業を行う Windows サービスとしてデプロイされたコンソール アプリを使用しています。
コンテナーでは、コンソール アプリを実行するだけで問題なく動作するようです。Windows サービスとしてインストールする必要はありますか?
.net 4.5 を使用して、Server 2016 CTP5 で Windows コンテナー ベースのマイクロ サービスを構築しようとしています。
コンテナー以外の世界では、キューにサブスクライブしてその作業を行う Windows サービスとしてデプロイされたコンソール アプリを使用しています。
コンテナーでは、コンソール アプリを実行するだけで問題なく動作するようです。Windows サービスとしてインストールする必要はありますか?
いいえ、サービスとしてインストールしたくありません。コンテナーでアプリケーションを実行すると、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 サービスが停止してもコンテナーは実行を続けます。