在 Windows Server 2016 上运行容器

在 Windows Server 2016 上运行容器

我正在尝试在 Server 2016 上运行一些 Docker 容器测试。我已经安装了容器功能和最新的 Docker 引擎和 CLI。我已经下载了几个 Docker 映像,我已经使用它们启动 Docker 容器并自定义这些容器,提交更改并使用它们创建自定义 Docker 映像。

到目前为止,一切都很好:

我使用以下命令从其中一个 Microsoft Docker 映像创建容器:

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

容器(miis)运行良好,我可以连接到它:

docker exec -i miis cmd

当我停止容器并尝试重新启动它时,问题就开始了。我使用以下命令停止并启动容器:

docker stop miis

docker start miis

然后,当我尝试使用以下命令获取正在运行的容器列表时docker ps,我的容器未列出。当我使用以下命令获取所有容器的列表时,docker ps -a我的容器被列出,状态为“已退出”。

据我了解,问题在于容器正在启动,运​​行它应该运行的作业,然后立即退出。

我的问题是如何启动从 Microsoft 或自定义映像创建的新容器并保持它们运行?防止它们立即进入退出状态。

我以为ping -t localhost会这样做,但这似乎只能工作一段时间,并且它阻止我访问容器 CMD 提示符。

答案1

Docker 容器将一直运行,直到预期运行或遇到严重错误。

我会检查以确保您的 Docker 映像中没有任何正在终止的命令(即发出退出代码)。

如果仍有问题,请检查 docker 日志以查看其退出的原因。通常,退出代码为零表示已完成并发出了干净的退出代码。否则,它应该会为您提供有关导致容器关闭的原因的更多信息(缺少依赖项或 IIS 崩溃)。

在 Windows 上,日志存储到事件查看器中,使用以下命令:

Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5)

以下是查看日志的参考:

https://docs.microsoft.com/en-us/virtualization/windowscontainers/troubleshooting#finding-logs

相关内容