无法在Windows IIS Docker容器中启动交互式会话

时间:2016-11-03 00:19:19

标签: amazon-web-services docker windows-server-2016

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

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

从Powershell(以管理员身份运行),我可以成功运行" microsoft / windowsservercore"容器处于交互模式,连接到容器中的CMD:

docker run -it microsoft/windowsservercore cmd

当我尝试运行" microsoft / iis"在交互模式下的容器,虽然我能够连接到IIS(通过浏览器),但我从未连接到容器中的交互式CMD会话。

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

相反,我只是得到:

  

服务' w3svc'开始

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

docker container ls

...并看到我的容器正在运行。

尝试附加锁定并且永不返回。

我已经切换了区域,发现每个区域都有不同的AMI:

  • us-east-1:ami-d08edfc7
  • us-west-2:ami-5e6bce3e

......这两者都有相同的结果。

使用的相关链接:

更新

使用以下链接,我能够基于服务器基础创建自己的Dockerfile并安装IIS,这似乎工作正常。

custom Dockerfile

1 个答案:

答案 0 :(得分:10)

这不是AWS AMI的问题,这是由于Microsoft IIS Dockerfile编写/成为Docker新手的方式。

Link to Microsoft's IIS DockerFile

最后一行(第7行):

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

Difference between CMD and ENTRYPOINT

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

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

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

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

Here is another reference link regarding ENTRYPOINT and CMD differences