Каждый RUN
(если он не находится в режиме использования явного argv) запускает новую оболочку, которая должна завершиться до завершения этой команды RUN.Эта оболочка может изменить только собственную среду и среду своих детей;он не может изменить среду других программ, запущенных после его выхода.
Напротив, ENV
контролирует среду, которую Docker передает в будущие процессы при запуске.
Таким образом,Вы можете переместить ENV
над RUN
и удалить экспорт из RUN
(чтобы правильно установить PATH до запуска оболочки), но вы не можете заставить RUN
выполнять работуENV
.