2016-07-24 1 views
-1

Я запускаю контейнер с некоторыми параметрами в интерактивном режиме.Docker: новые параметры для прикрепленного контейнера

docker run -i -t --name mycontainer myimage prm1 prm2 

ENTERYPOINT - мое приложение, которое использует параметры.

После завершения сеанса я хотел бы начать новый с новыми параметрами.

docker start mycontainer 
docker attach mycontainer 

Как передать новые параметры в новую сессию?

PS: Это подходящий сценарий для интерактивного док-приложения? Или я должен создать новый контейнер для каждого нового сеанса?

+0

Примечание для модераторов: вопросы докеров касаются 100% темы в разделе Переполнение стека. Вы найдете тысячи похожих вопросов относительно контейнера и Dockerfile прямо здесь, в Stack Overflow. – VonC

ответ

1

Лучше всего, если вы оставите ваш ENTRYPOINT по умолчанию (sh -c или my_application), а также использовать CMD вместо параметра командной

CMD prm1 prm2 

Это означает, по умолчанию, докер работы будет использовать prm1 prm2 по по умолчанию, но вы можете легко их переопределить, передав новый параметр при следующем запуске docker.


Этот подход (выше) основан на запуске нового контейнера вместо перезапуска «Выход».

Это обычная практика, поскольку постоянные данные должны храниться в объеме (docker volume create), что вы (повторно) смонтировать на новый контейнер (docker run -v)

Если вы перезагрузить ваш контейнер, и выгоды от различных параметров, то это зависит от вашего приложения:

  • , если указанное приложение может считывать эти параметры из переменных окружения, новый docker update команды (PR 15078, все еще открыты на issue 22490) делает не еще обновить переменные среды (только центрального процессора и памяти)
  • , если указанное приложение может прочитать те из файла свойств, можно использовать docker cp скопировать этот контейнер обновленную версию указанного файла свойств, с новыми свойствами в Это.
+0

Позвольте пояснить. Приложение использует параметры, но по умолчанию нет параметров. Таким образом, я могу легко передать любой параметр, когда создаю контейнер. Но неясно, как передать новые параметры при перезагрузке (start + attach) контейнере. –

+1

@DmitryPetrov вам не нужно перезагружать: вы просто запускаете (запускаете) новый контейнер) – VonC

+0

@DmitryPetrov «по умолчанию параметров нет». : это потому, что вы используете ENTRYPOINT. Если вы используете CMD, по умолчанию будет параметр. – VonC