在Windows容器中的控制台应用程序或Windows服务?

我正在尝试使用.net 4.5在服务器2016 CTP5上构build一个基于Windows Container的微服务。

在非容器世界中,我正在使用作为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服务停止容器继续运行。