Чем отличаются переменные ARG и ENV в Dockerfile и каким образом они используются?

В Dockerfile переменные ARG и ENV служат для разных целей:

Короткий ответ

Что ответить на собеседовании

В Dockerfile переменные ARG и ENV служат для разных целей:

Подробный разбор

Ответ с пояснениями

В Dockerfile переменные ARG и ENV служат для разных целей:

  • ARG — это переменные, доступные только во время сборки образа (build time). Их можно задавать при сборке через docker build --build-arg. После сборки они не сохраняются в образе.
  • ENV — это переменные окружения, которые сохраняются в образе и доступны во время выполнения контейнера (runtime).

Пример:

ARG VERSION=1.0
FROM python:${VERSION}

ENV APP_ENV=production

Здесь VERSION задаёт версию Python на этапе сборки, а APP_ENV будет доступна внутри контейнера при запуске.

Итого:

  • ARG — для параметров сборки, не сохраняются в конечном образе.
  • ENV — для переменных окружения, доступных в контейнере после запуска.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее