Как показано в проблеме 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
будет экспортировать эти (с помощью этих параметров) переменные? Извините за то, что наткнулся на такой старый ответ, но веб-поиск только что поднял его до меня. Хороший ответ, кстати.