2016-12-11 2 views
5

Можно ли использовать аргументы, определенные в изображении родительского докера?Передача аргументов родительскому файлу Docker

Учитывая следующий ребенок Dockerfile

FROM jenkins 

USER ${user} 

RUN echo "${user}" 

Отрывок из родителей Dockerfile

FROM openjdk:8-jdk 

ARG user=jenkins 
ARG group=jenkins 
ARG uid=1000 
ARG gid=1000 

ответ

2

Build arguments не сохраняются в образах, так что они не будут доступны в строит FROM родительский образ.

В отличие от инструкции ARG значения ENV всегда сохраняются на встроенном изображении.

Переменные ARG не сохраняются в построенное изображение, поскольку переменные ENV являются.

Аргументы могут сохраняться путем их хранения где-то, самое легкое место в переменной среды.

ARG IMAGE_USER=jenkins 
ENV IMAGE_USER=$IMAGE_USER 

Все RUN шаги ребенка изображения будет иметь доступ к IMAGE_USER в их среде.

+0

Мог ли я каким-то образом извлечь текущее значение директивы USER в «Dockerfile» и сохранить его, прежде чем переопределить ПОЛЬЗОВАТЕЛЬ. Что-то вроде этого: 'user = $ {USER}', затем 'USER root', а затем делать вещи, а затем' USER $ {user} '? – lanoxx

+0

@lanoxx Нет, не с системой сборки докеров. Вы можете сохранить пользователя где-нибудь в файловой системе изображения и использовать в оболочке нечто вроде ['gosu'] (https://github.com/tianon/gosu), чтобы вернуться к этому сохраненному пользователю. – Matt

Смежные вопросы