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

时间:2016-09-26 14:29:33

标签: docker windows-server-2016

我正在尝试使用.net 4.5在Server 2016 CTP5上构建基于Windows容器的微服务。

在非容器世界中,我使用部署为Windows服务的控制台应用程序订阅队列并完成其工作。

在一个容器中,我可以运行控制台应用程序,它似乎运行得很好。是否需要将其安装为Windows服务?

1 个答案:

答案 0 :(得分:16)

不,您不想将其作为服务安装。在容器中运行应用程序时,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服务停止,容器将继续运行。