Вопрос проверяет понимание конфигурации контейнеров и различий между временем сборки и выполнения.
ARG используется только во время сборки образа. ENV доступна и во время сборки, и во время запуска контейнера. ARG не сохраняется в финальном образе. ENV становится частью окружения контейнера. Эти инструкции решают разные задачи.
ARG и ENV выглядят похожими, но применяются на разных этапах жизненного цикла контейнера.
ARG — переменная, доступная только на этапе сборки образа.
ENV — переменная окружения, доступная в работающем контейнере.
Перед использованием важно понимать ограничения:
Область видимости
только docker build
недоступна после сборки
Назначение
версии пакетов
флаги сборки
временные параметры
ENV используется для runtime-конфигурации:
Область видимости
сборка
запуск контейнера
Назначение
конфигурация приложения
параметры окружения
пути и режимы работы
ARG APP_VERSION=1.0
ENV APP_ENV=production
APP_VERSION не будет доступен внутри контейнера, APP_ENV — будет.
ARG применяется для сборки, ENV — для конфигурации запущенного контейнера.