11

.net 4.5 を使用して、Server 2016 CTP5 で Windows コンテナー ベースのマイクロ サービスを構築しようとしています。

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

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

4

1 に答える 1

19

いいえ、サービスとしてインストールしたくありません。コンテナーでアプリケーションを実行すると、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 サービスが停止してもコンテナーは実行を続けます。

于 2016-09-26T15:24:26.067 に答える