Переменная окружения не может быть изменена в контейнере Docker
docker run -e HOST_IP:xxxx
И я использую cmd, чтобы проверить, env HOST_IP
изменена:
docker exec CONTAINER_ID env |grep HOST_IP
Я обнаружил, что это не изменилось после этих попыток:
docker exec CONTAINER_ID bash -c 'export HOST_IP=XXX'
docker exec CONTAINER_ID bash -c 'echo HOST_IP=XXX >> ~/.bashrc && source ~/.bashrc'
Зачем? Что контролировало env
переменная?
2 ответа
Может быть, вам просто нужно использовать форму
docker run -e NEW_ENV_VAR='new_var_val'
как упомянуто в: Как передать переменные среды в контейнеры Docker?
Вы можете проверить, введя команду env для работающего контейнера:
sudo docker exec -it running-container-name env
Докер exec
каждый раз запускает вашу команду в новом сеансе (bash или sh) и, следовательно, ваш export
Переменные окружения исчезли при следующем выполнении.
Если вы хотите постоянно изменять переменные окружения во время выполнения контейнеров Docker, я могу думать только о том, чтобы скопировать ваши переменные в /etc/environment
и bash будет импортировать их, если это настроено, или вы можете export HOST_IP=XXX
в .bashrc
для того же эффекта.
Но помните, что в этом сценарии ваше приложение в докере по-прежнему не может поднять его, если оно не использует bash при запуске. В этом случае вам нужно заставить ваше приложение читать переменные из файла или тому подобное.