1

我正在尝试使用以下命令在 Windows Server 2016(ec2 实例或 Azure VM)上运行nanoserver映像:

docker run -d --name nanoms microsoft/nanoserver:latest

编辑:实际上它不仅仅是 nanoserver,我在运行 microsoft/windowsservercore:latest 时遇到了同样的问题。

但是,如果我然后运行(docker ps -a),它会显示状态为已退出。 Docker 记录 nanoms - 只显示“c:>”(所以没有错误)

如果我使用-it而不是-d那么它会显示一些“东西”并挂起,直到我按下 ctrl-C,但它实际上已经启动并且我可以“登录”!

'东西'显示:

[2J[H[1H[37;40m[K[2H[K[3H[K[4H[K[5H[K[6H[K[7H[K[8H[K[9H[K[10H[K[11H] [K[12H[K[13H[K[14H[K[15H[K[16H[K[17H[K[18H[K[19H[K[20H[K[21H[K[22H[K[23H[K [24H[K[25H[K [1;1HMicrosoft Windows [版本 10.0.14393] (c) 2016 Microsoft Corporation。版权所有。

编辑 2:当我在 powershell 中运行命令时,会发生上述“事情”。如果我在 cmd 提示符下运行该命令,则使用 -it 会成功连接。但是 -d 仍然总是退出。

我在这里做错了什么吗?windows server 2016 和 docker 有什么特别之处,这意味着 -d 不起作用?我认为用 -d 启动容器有点基本......

我试过重启服务器,结果一样。

nanoserver 是一个基于 10.0.14393.693 的图像(.823 有一些问题)。

==================

要重新创建问题:

  1. 启动 EC2 实例或 Azure VM,OS == Windows Server 2016 - 使用容器。
  2. 在 RDP 中,启动 CMD 窗口(或 Powershell)
  3. 运行命令:docker run -d microsoft/nanoserver
  4. 完成后运行命令:docker ps -a
  5. 验证,容器是活动的还是退出的?

我的期望是应该是活跃的。我的期望错了吗?

4

2 回答 2

2

是的,你的期望是错误的:)

容器需要运行一些东西。例如,您在使用 -it 参数运行时创建的命令提示符。明确指定 popwershell 可能会更好地为您工作...

docker run --name nanoms microsoft/nanoserver:latest -it powershell
于 2017-06-15T23:28:45.733 回答
1

Nanoserver 容器默认运行 CMD 只需添加 -d -it 和瞧..

docker run -d -it mcr.microsoft.com/windows/nanoserver:1803
于 2020-05-13T10:50:28.903 回答