我正在使用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:
......这两者都有相同的结果。
使用的相关链接:
更新
使用以下链接,我能够基于服务器基础创建自己的Dockerfile并安装IIS,这似乎工作正常。
答案 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