Я новичок в Docker
. Я хотел бы, чтобы мой Windwows-ServerCore
контейнер выполнял задачу через регулярные промежутки времени. По этой причине я решил установить службу в своем контейнере, которая может запускать эти задачи через регулярные промежутки времени.
Это мой докер-файл -
FROM test2
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
RUN New-LocalUser -Name "testuser" -Password (ConvertTo-SecureString -AsPlainText "CrackPassword!" -Force) -FullName "Test.User" -Description "LocalAdministrator"
RUN Add-LocalGroupMember -Group administrators -Member testuser -Verbose
RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=.\testuser /password=CrackPassword! /LogToConsole=true /ShowCallStack TestDockerService.exe
ENTRYPOINT ["powershell"]
CMD Start-Service \""DockerService\""
Проблема заключается в том, что этот контейнер завершает работу после запуска, предположительно Powershell
, поскольку команда ввода запускает службу и, завершив ее работу, завершает работу, снимая контейнер с собой.
Как я могу включить контейнер и, соответственно, чтобы мой сервис продолжал работать?
Я читал об аргументе -d
с docker run
, который будет detach
контейнером, поэтому докер больше не будет его контролировать, но это также будет означать потерю доступа к STDIN
и т. Д., Которые могут мне понадобиться , Есть ли другой способ сделать то же самое, или -d
правильный подход?
Возможно, другим вариантом может быть запуск службы с batch file
и выполнение бесконечного цикла после команды запуска, что позволяет контейнеру оставаться живым?
Если говорить более широко, как сохранить Docker container
работающим, даже если служба не запущена, для проверки и отладки с помощью интерактивного сеанса, скажем?