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

标签 docker windows-server-2016

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

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

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

最佳答案

不,您不想将其安装为服务。当您在容器中运行应用程序时,Docker 会监控容器中的事件进程。如果事件进程停止,则容器退出。所以你应该在前台运行你的应用程序,让 Docker 将容器放在后台(通过使用 docker run -d 启动它)。

一个异常(exception)是现有平台已经是 Windows 服务 - 例如。 microsoft/iis图片。 IIS 在容器的后台运行,因此您需要启动另一个进程来保持容器运行 - 这就是为什么您会看到 IIS 容器是这样启动的:

docker run -d -p 80:80 microsoft/iis ping -t localhost

ping 命令保持容器运行,而 IIS 服务实际响应请求。但这并不理想,Docker 正在监视 ping,因此如果 IIS 服务停止,容器将继续运行。

关于docker - Windows 容器中的控制台应用程序或 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39705529/

相关文章:

Azure Windows Server 2016 上的 ASP.NET5 CLR 网站正在运行,但在浏览器中出现 404 NOT FOUND

azure - 如何在 Azure Windows Server 2016 DataCenter 上激活 Remoteaudio?

powershell - 如何在 Windows 2016 上使用 Powershell IISAdministration 模块为 IIS 网站设置需要 SSL

docker - Docker Tmux问题

python - 在 docker 上使用 selenium 网格运行 browsermob

Docker:无法使用 VictoriaMetrics "vmagent"抓取 SonarQube,连接被拒绝

powershell - 如何检查密码复杂性?

php - 如何在 CentOS 7.6 中使用 sqlsrv 连接到 SQL Server?

java - 添加失败:stat/var/lib/docker/tmp/docker-builder673702145/target/xxx.jar:没有这样的文件或目录

docker - 如何在Digitalocean访问Docker容器?