@H_404_1@我正在使用AWS“带有容器的Windows Server 2016 Base”映像(ami-5e6bce3e).
@H_404_1@使用docker info我可以确认我有最新的(服务器版本:1.12.2-cs-ws-beta).
@H_404_1@从Powershell(以管理员身份运行),我可以在交互模式下成功运行“microsoft / windowsservercore”容器,连接到容器中的CMD:
@H_404_1@
> us-west-2:ami-5e6bce3e @H_404_1@……这两个都有相同的结果. @H_404_1@使用的相关链接: @H_404_1@> AWS announcement and simple Docker example
> MSDN simple Docker example
> MSDN IIS Docker example @H_404_1@更新 @H_404_1@使用以下链接,我能够基于服务器基础创建自己的Dockerfile并安装IIS,这似乎工作正常. @H_404_1@custom Dockerfile
docker run -it microsoft/windowsservercore cmd
@H_404_1@当我尝试以交互模式运行“microsoft / iis”容器时,虽然我能够连接到IIS(通过浏览器),但我从未连接到容器中的交互式CMD会话.
@H_404_1@
docker run -it -p 80:80 microsoft/iis cmd
@H_404_1@相反,我只是得到:
@H_404_1@
@H_404_1@Service ‘w3svc’ started@H_404_1@使用另一个Powershell窗口,我可以: @H_404_1@
docker container ls
@H_404_1@…并看到我的容器正在运行.
@H_404_1@试图附加锁定而永不返回.
@H_404_1@我已经切换了区域,发现每个区域都有不同的AMI:
@H_404_1@> us-east-1:ami-d08edfc7> us-west-2:ami-5e6bce3e @H_404_1@……这两个都有相同的结果. @H_404_1@使用的相关链接: @H_404_1@> AWS announcement and simple Docker example
> MSDN simple Docker example
> MSDN IIS Docker example @H_404_1@更新 @H_404_1@使用以下链接,我能够基于服务器基础创建自己的Dockerfile并安装IIS,这似乎工作正常. @H_404_1@custom Dockerfile
最佳答案
这不是AWS AMI的问题,这是由于Microsoft IIS Dockerfile编写/成为Docker新手的方式.
@H_404_1@Link to Microsoft’s IIS DockerFile
@H_404_1@最后一行(第7行):
@H_404_1@
ENTRYPOINT ["C:\\ServiceMonitor.exe","w3svc"]
@H_404_1@Difference between CMD and ENTRYPOINT
@H_404_1@因此,由于此Dockerfile使用ENTRYPOINT,要启动交互式PowerShell会话,请使用以下命令:
@H_404_1@
docker run --entrypoint powershell -it -p 80:80 microsoft/iis
@H_404_1@请注意,似乎“–entrypoint”标志需要在运行后,因为这不起作用:
@H_404_1@
docker run -it -p 80:80 microsoft/iis --entrypoint powershell
@H_404_1@Here is another reference link regarding ENTRYPOINT and CMD differences