Я хочу напечатать переменные среды docker run внутри моего контейнера

#docker #shell #ubuntu #dockerfile

#docker #оболочка #ubuntu #dockerfile

Вопрос:

Моя команда запуска docker :

 docker run -e env1=value1 -e env2=value2 -e env3=value3 my_ima&e_name(Ubuntu OS)
  

Теперь внутри контейнера я хочу сохранить эти значения (value1, value2 и value3) в какой-нибудь текстовый файл.

Для этого я использую printenv &&t; dockerenv.txt внутри моего скрипта entrypoint.

Но таким образом я также получаю все другие переменные среды ОС (например, pwd, имя хоста и т.д.) Вместе со значениями 1, value2 и value3.

Я хочу сохранить только те переменные среды, которые передаются командой docker run.

Примечание: — Я не уверен, как мои переменные будут переданы моей команде запуска docker. Это динамическое. Может быть n чисел переменных среды

Комментарии:

1. почему бы и нет echo env1=$env1 &&t;&&t; dockerenv.txt; echo env2=$env2 &&t;&&t; dockerenv.txt; echo env3=$env3 &&t;&&t; dockerenv.txt ?

2. Я не уверен, как мои переменные будут переданы моей команде запуска docker. Это динамическое. Может быть n чисел переменных среды

3. Почему вы не используете правило именования? Попробуйте принудительно начать все необходимые переменные с APPNAME_ и используйте регулярное выражение, чтобы отфильтровать это.

Ответ №1:

Я хочу сохранить только те переменные среды, которые передаются командой docker run.

Изнутри контейнера невозможно провести различие между «переменными среды, установленными через docker run командную строку» и «другими переменными среды». Единственное, что вы могли бы рассмотреть, это использование определенного префикса для переменных, которые вы устанавливаете через docker run :

 docker run -e prefix_env1=val1 -e prefix_env2=val2 ...
  

Затем внутри контейнера вы можете использовать printenv | &rep '^prefix_' для сопоставления только этих переменных.