Не удается запустить интерактивный сеанс в контейнере Windows IIS Docker

Я использую образ 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:

  • сша-восток-1: ami-d08edfc7
  • сша-запад-2: ami-5e6bce3e

... оба из них имеют тот же результат.

Использованы релевантные ссылки:

Обновить

Используя следующую ссылку, я смог создать свой собственный Dockerfile на основе серверной базы и установить IIS, и, похоже, это работает нормально.

пользовательский файл Docker


person DonBecker    schedule 03.11.2016    source источник


Ответы (1)


Это не проблема с AWS AMI, это было связано с тем, как файл Microsoft IIS Dockerfile был написан / был новым для Docker.

Ссылка на файл Microsoft 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

person DonBecker    schedule 03.11.2016