6

我正在使用 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,这似乎工作正常。

自定义 Dockerfile

4

1 回答 1

13

这不是 AWS AMI 的问题,这是由于 Microsoft IIS Dockerfile 的编写方式/对 Docker 来说是新的。

链接到微软的 IIS DockerFile

最后一行(第 7 行):

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

CMD 和 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

这是另一个关于 ENTRYPOINT 和 CMD 差异的参考链接

于 2016-11-03T01:38:20.737 回答