Як показано у випуску 684 , export
вони не зберігатимуться на всіх зображеннях. (Не забувайте, що кожна директива Dockerfile генерує проміжний контейнер, перетворений у проміжне зображення: це зображення не збереже експортоване значення)
ENV
буде:
Змінні середовища, встановлені за допомогою ENV
, зберігатимуться, коли контейнер запускається із отриманого зображення.
Ви можете переглядати значення за допомогою docker inspect
та змінювати їх за допомогою docker run --env <key>=<value>
.
Випуск ілюстрував це:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Коли я docker run [img] bash -c 'echo $PATH'
це роблю, це ніколи не включає /foo/bar
.
Спробуй це
Створіть новий файл докер, що містить:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Потім побудуйте його. Результатом останнього кроку є:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Ти можеш бачити:
FOO
зберігається через проміжні контейнери, завдяки ENV
ключовому слову;
BAR
не зберігається на наступному кроці через export
команду;
BAZ
відображається правильно, оскільки змінна використовується в одному контейнері.
docker
наприклад,run
із--env-file
або--env
буде експортувати ці (за цими аргументами параметрів) змінні? Вибачте, що натрапив на таку стару відповідь, але веб-пошук просто підніс її до мене. Приємна відповідь до речі.