在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服务停止容器继续运行。