На практике для вас не имеет большого значения, выполняется ли отдельный шаг Dockerfile в контейнере или нет. Идентификаторы изображений промежуточного уровня иногда полезны для отладки, но я не думаю, что когда-либо использовал идентификаторы контейнеров для каждого шага для чего-либо.
Из трех перечисленных вами команд ни одна из них не запускает код ". FROM
просто устанавливает изображение, с которого будет начинаться следующий шаг; COPY
и ADD
вставляют файлы в файловую систему контейнера и напрямую создают слой. Им не нужно создавать контейнеры.
Я не знаю, почему другие команды, отличные от RUN
, будут выполняться в контейнере. Я наткнулся на предложенный GitHub PR , чтобы ENV
не использовал контейнер. Это заставило бы эти команды работать немного быстрее, но в противном случае вы бы не заметили никакой разницы, так или иначе.