Настройка глобальных переменных среды для всех контейнеров 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.

Другие вопросы по тегам