amazon-web-services - 无法在 Windows IIS Docker 容器中启动交互式 session

标签 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 session 。

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

相反,我只是得到:

Service 'w3svc' started

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

docker container ls

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

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

后来我切换了地区,发现每个地区都有不同的AMI:

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

...两者的结果相同。

使用的相关链接:

更新

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

custom Dockerfile

最佳答案

这不是 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 session ,请使用以下命令:

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

关于amazon-web-services - 无法在 Windows IIS Docker 容器中启动交互式 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391896/

相关文章:

c++ - AWSStringStream.h : No such file or directory

amazon-web-services - 如何通过 CloudFormation 在不同 Fargate 任务中运行的 Consul 服务器将 Consul 代理加入 Consul 集群?

wordpress - 如何将 apache2 链接到 wordpress docker 容器?

docker - 无法连接到 Docker 守护进程 http+docker ://localhost with docker-compose

amazon-web-services - 如何在Elastic Beanstalk中增加Docker中的ulimit?

docker - 在 docker 中启动 clickhouse-server 失败,Poco 出错

docker - 无法从浏览器访问 IIS 容器 - Docker

docker - 在Windows Container和Windows Server 2016中安装服务之间的区别?

java - 为什么 CLASSPATH 对于 Python 失败但对于 RazorSQL 却有效?

amazon-web-services - AWS ELB/ALB 多重 SSL 证书