.net4.5を使用してServer2016CTP5で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サービスは、コンテナーの実行を停止します。