关于amazon Web服务:无法在Windows IIS Docker容器中启动交互式会话

Cannot launch interactive session in Windows IIS Docker container

我正在使用AWS"Windows Server 2016 Base with Containers"图像(AMI-5E6BCE3E)。

使用docker info我可以确认我有最新的(服务器版本:1.12.2-cs-ws-beta)。

在PowerShell(以管理员身份运行)中,我可以在交互模式下成功运行"Microsoft/WindowsServerCore"容器,并连接到容器中的cmd:

1
docker run -it microsoft/windowsservercore cmd

当我尝试在交互模式下运行"Microsoft/IIS"容器时,尽管我能够(通过浏览器)连接到IIS,但我从未连接到容器中的交互命令会话。

1
docker run -it -p 80:80 microsoft/iis cmd

相反,我只是得到:

Service 'w3svc' started

使用另一个PowerShell窗口,我可以:

1
docker container ls

…看到我的集装箱在运行。

试图附加锁,但永远不会返回。

之后我切换了区域,发现每个区域上都有不同的AMI:

  • 美国东部-1:AMI-D08EDFC7
  • 美国西部-2:AMI-5E6BCE3E

…这两种方法都有相同的结果。

使用的相关链接:

  • AWS公告和简单Docker示例
  • msdn简单Docker示例
  • msdn-iis-docker示例

更新

使用下面的链接,我可以基于服务器库创建自己的Dockerfile,并安装IIS,这看起来很好。

自定义Dockerfile


这不是AWS AMI的问题,这是因为Microsoft IIS Dockerfile是Docker新编写的。

链接到Microsoft的IIS Dockerfile

最后一行(第7行):

1
ENTRYPOINT ["C:\\ServiceMonitor.exe","w3svc"]

命令和入口点之间的差异

因此,由于此dockerfile使用entrypoint,要启动交互式PowerShell会话,请使用以下命令:

1
docker run --entrypoint powershell -it -p 80:80 microsoft/iis

请注意,似乎"-entrypoint"标志需要在运行之后,因为这不起作用:

1
docker run -it -p 80:80 microsoft/iis --entrypoint powershell

这里是另一个关于入口点和命令差异的参考链接