Почему некоторые команды показывают вывод как «Выполняется в <id>», за которым следует «Удаление промежуточного контейнера <id>», тогда как некоторые команды этого не делают? - PullRequest
0 голосов
/ 07 мая 2020

Во время сборки docker некоторые команды (например: RUN, ENV, WORKDIR, LABEL) возвращают следующее сообщение: Running in <id>, за которым следует Removing intermediate container <id>

Где, как некоторые команды (например: ADD, FROM , COPY) не возвращают ни запуск, ни удаление сообщения.

Почему некоторые команды показывают вывод как «Выполняется», за которым следует «Удаление промежуточного контейнера», тогда как некоторые команды этого не делают? Что такое концепция?

1 Ответ

0 голосов
/ 07 мая 2020

На практике для вас не имеет большого значения, выполняется ли отдельный шаг Dockerfile в контейнере или нет. Идентификаторы изображений промежуточного уровня иногда полезны для отладки, но я не думаю, что когда-либо использовал идентификаторы контейнеров для каждого шага для чего-либо.

Из трех перечисленных вами команд ни одна из них не запускает код ". FROM просто устанавливает изображение, с которого будет начинаться следующий шаг; COPY и ADD вставляют файлы в файловую систему контейнера и напрямую создают слой. Им не нужно создавать контейнеры.

Я не знаю, почему другие команды, отличные от RUN, будут выполняться в контейнере. Я наткнулся на предложенный GitHub PR , чтобы ENV не использовал контейнер. Это заставило бы эти команды работать немного быстрее, но в противном случае вы бы не заметили никакой разницы, так или иначе.

...