Я сделал несколько контейнеров (которые запускаются в среде Unix, где точкой входа является файл сценария. Эти файлы сценариев обычно управляют некоторой конфигурацией, а затем продолжают выполнение CMD с помощью exec "$@". При создании/тестировании такого image Обычно я возвращаюсь в командную строку, чтобы вручную подтвердить конфигурации. Это работает нормально. Однако сегодня я делал аналогичный образ, но на основе контейнера Windows (Microsoft/nanoserver), и здесь я столкнулся с несколькими проблемами.
1) Я сделал сценарий powershell для настройки, но в powershell я не могу использовать exec "$@" для передачи выполнения в CMD. Что эквивалентно в контейнере Windows?
2) Если я создам образ на основе microsoft/nanoserver и просто скопирую некоторые файлы, вы останетесь в интерактивном режиме (конечно, если вы запустите контейнер с параметрами -it). Но как только я укажу ENTRYPOINT на сценарий powershell, контейнер завершится сразу после запуска сценария, даже если я добавлю cmd к команде запуска.
Итак, в основном мой вопрос: как мне заставить его войти в командную строку после выполнения сценария? (с оконным контейнером).
SHELL ["powershell"]
вашENTRYPOINT
запускается программой powershell.exe, поэтому это может быть любое допустимое выражение Powershell. Вы можете запустить файл скрипта напрямую илиInvoke-Expression
его. - person jmlane   schedule 07.03.2018