2016-07-26 2 views
2

Я установил сервер с несколькими контейнерами докеров, доступный с jwilders nginx reversre proxy. При запуске контейнеров вы можете установить переменную среды VIRTUAL_HOST. Я пытался выяснить способ их обновления после запуска контейнера.Docker - Обновление среды Переменные контейнера

Раствор отправил here:

Вы просто остановить Docker демона и изменения контейнера конфигурации в

/var/lib/docker/containers/[container-id]/config.json

требует от вас, чтобы остановить Docker демон, но я предпочел бы не должны прибегать к этому.

Другой here, использует докер обязательство сохранить информацию экземпляра:

Сказав, что вы -can- сохранить изменения файловой системы в контейнере, совершая его в качестве нового изображения;

$ docker run -it --name=foobar alpine sh 
$ docker commit foobar mynewimage 
$ docker rm foobar 
$ docker run -it --name=foobar mynewimage sh 

Хотя это тоже, кажется, немного над верхней частью для только изменения переменной окружения.

Я просмотрел docker update, но это в основном для реконфигурации ресурсов контейнера.

Конечно, если у меня нет другого выбора, я буду использовать любой из вышеперечисленных методов, но мне интересно, нашел ли кто-нибудь другое решение?

+0

Я думаю, что лучше обновить файл Dockerfile с помощью некоторых «ENV abc 123» или «ENV abc = 123 def = 456» и перестроить/перезапустить – user2915097

ответ

5

Уничтожьте свой контейнер и запустите новый с новой переменной окружения, используя docker run -e .... Он идентичен изменению переменной среды в запущенном процессе, вы останавливаете ее и перезапускаете с новым переданным значением. Замените концепцию перезапуска процесса уничтожением и воссозданием нового контейнера.

Если ваш контейнер содержит файлы, которые не могут быть потеряны, тогда вы должны использовать тома. Другое содержимое файловой системы контейнера должно быть одноразовым или неизменным.

+0

Ну да, правда, можно вернуться к повторному созданию контейнера, и Я сделал это в конце, так как я использую том, но мне было любопытно, есть ли способ сделать это как своего рода исправление? –

+1

Docker не предоставляет способ изменения переменной среды в запущенном контейнере, потому что ОС не предоставляет способ изменения переменной среды в запущенном процессе. Вам нужно уничтожить и воссоздать. – BMitch

Смежные вопросы