Настройка глобальных переменных среды для всех контейнеров Docker
Можно ли установить env. переменные для всех будущих контейнеров Docker?
Это будет полезно для настройки прокси-сервера http для конкретного хоста без изменения файла образа Docker или способа запуска контейнера (так что тот же контейнер Docker может нормально работать в другом "контексте").
Может быть через /etc/default/docker
?
2 ответа
Docker compose использует подстановку переменных, поэтому вы можете использовать переменные хоста в файле docker-compose:
Если в вашем сеансе bash есть переменная с именем EXTERNAL_PORT
определены.
web:
build: .
ports:
- "${EXTERNAL_PORT}:5000"
Проверьте: https://docs.docker.com/compose/compose-file/
Также в случае прокси я предполагаю, что используя HTTP_PROXY
следует перенаправить трафик по умолчанию, если он определен в текущем сеансе оболочки.
export http_proxy=http://10.203.0.1:5187/
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
Нечто подобное должно перенаправлять весь трафик http, вы можете установить его из .bashrc
, Никогда не проверял с докером, дайте мне знать, если он работает.
Если вы не используете docker-compose, как сказал Маркс, то нет.
Dockerfiles создают двоичные файлы. Все, что не указано в dockerfile (или в docker-compose yaml или в docker build
) не попадет в контейнер. Это связано с многими соображениями безопасности, а также с общими рекомендациями, поскольку люди могут заставить эти контейнеры зависеть от самого хоста. Либо используйте docker-compose для создания своего здания, либо изучите возможность внесения изменений в сам хост, которые могут повлиять на этот слой контейнера Docker, например общесистемный прокси, который влияет на подсеть 172.