我正在尝试使用.net 4.5在Server 2016 CTP5上构建基于Windows容器的微服务。
在非容器世界中,我使用部署为Windows服务的控制台应用程序订阅队列并完成其工作。
在一个容器中,我可以运行控制台应用程序,它似乎运行得很好。是否需要将其安装为Windows服务?
答案 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服务停止,容器将继续运行。