2015-11-18 2 views
1

Задача очень проста, я знаю, что переменная окружения (будет) установлена ​​внутри контейнера, и я хочу использовать ее в моей встроенной команде запуска. Однако значение не получает заселена:Переменные среды контейнера доступа в команде встроенного запуска

docker run --rm --link other ubuntu printenv | grep OTHER_ENV_VAR_NAME && echo ${OTHER_ENV_VAR_NAME} 

выходной ток выше команды:

> OTHER_ENV_VAR_NAME=valueOfVariableInLinkedContainer 
> 

выход echo на второй строке пуст. что я ожидаю, чтобы получить это:

> OTHER_ENV_VAR_NAME=valueOfVariableInLinkedContainer 
> valueOfVariableInLinkedContainer 

printenv дает правильное значение, но значение, переданное в echo не является правильным. Я предлагаю оценить значение на моем хосте, а не внутри контейнера. Поэтому я попытался использовать одиночные и двойные кавычки вокруг команды эха и избежать $, используя \ без каких-либо успехов.

Моя ведущая машина также является Ubuntu.

+0

'значение, переданное в эхо, неверно, что с ним связано? Пожалуйста, опубликуйте свой ожидаемый результат и то, что на самом деле выводится, а также вывод вашей первой команды. – 123

+1

включил текущий и ожидаемый выходные данные – mohamnag

ответ

2

Для того, чтобы трубы и эхо внутри одной и той же CMD грузчиком запуска, используйте команду оболочки (sh -c)

docker run --rm --link other ubuntu sh -c 'printenv | grep OTHER_ENV_VAR_NAME && echo ${OTHER_ENV_VAR_NAME}' 

Если вы этого не сделаете, Grep трубы и эхо будет иметь место в вашем хост корпус (тот, где выполняется docker run).
Это не отразится на чем-либо, так как значение среды задается только в сеансе докера.

+0

с и без '-it', grep работает, но не эхо, и это моя проблема. – mohamnag

+0

@mohamnag, что абсолютно нормально: просто grepping значение не влияет на текущую оболочку. – VonC

+0

grep существует только для целей тестирования, мне нужно получить значение в моей команде echo. эхо будет заменено другой командой, но мне нужно это значение. что-то вроде 'docker run --rm -it -link other ubuntu tar $ {OTHER_ENV_VAR_NAME}' – mohamnag

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