Рейтинг:0

Как env var разрешается в дистрибутивном контейнере?

флаг in

Я использую контейнер без дистрибутива для своего приложения и обычно запускаю свое приложение следующим образом:

java -jar $ARG1 $ARG2 app.jar

В distroless образ я дал только

CMD ["app.jar"]

Аргументы — это предопределенные env var в контейнере или на локальном компьютере. Дело в том, что переменные среды AFAIK разрешаются с помощью оболочки/bash, но когда в контейнере нет sh/bash, как будут разрешаться переменные среды. Я запускаю свое приложение в K8S, и приложение может использовать env var из K8S. Интересно, как это произошло? Есть идеи?

muru avatar
флаг us
Что вы имеете в виду под "решено"?
celcin avatar
флаг in
чтение env var @muru
muru avatar
флаг us
Переменные среды задаются родительским процессом при создании дочернего процесса. Они просто существуют в памяти дочернего процесса — дочерний процесс может свободно читать их без необходимости в какой-либо оболочке.
celcin avatar
флаг in
@muru что/кто является родительским процессом в этом контексте? Я имею в виду, что k8s запускает контейнер, который изолирован от машины, на которой он работает.
muru avatar
флаг us
Но K8s знает ваше определение контейнера и переменные окружения в образе, верно? Он может установить их при запуске контейнера.
celcin avatar
флаг in
Я не знал, как это работает за кулисами. Я думал, что env var всегда будет читаться оболочкой. Спасибо @муру

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.