컨테이너·워크플로우 자동화/DocKer 기본 및 활용

Dockerfile ENV vs ARG: 변수의 실행 시점과 생명주기 차이

Data Jun 2026. 2. 18. 10:42

Dockerfile에서 변수를 선언할 때 사용하는 명령어는 ENV와 ARG이다.
두 명령어 모두 값을 재정의할 수 있지만, 언제 사용되는지얼마나 오래 유지되는지에서 본질적인 차이가 있다.

 

ARG는 이미지 빌드 시점에만 사용되는 변수이고,
ENV는 빌드 이후 컨테이너 실행 시점까지 유지되는 환경 변수이다.

 

즉, 빌드 과정에서만 필요한 값이라면 ARG,
실행 환경에서 필요한 값이라면 ENV를 사용하는 것이 맞다.

 

1. 선언 방식 차이

ARG VERSION
ENV APP_ENV=production
  • ARG는 기본값 없이 선언 가능
  • ENV는 반드시 값이 필요

문법 차이는 크지 않지만, 역할은 완전히 다르다.

 

2. 값 재정의 시점

 1) ARG → 빌드 시점

docker build --build-arg VERSION=1.0 .

이미지를 만들 때만 값이 적용된다.

 

 2) ENV → 컨테이너 실행 시점

docker run -e APP_ENV=development myimage

컨테이너 실행 시 환경 변수를 바꿀 수 있다.

 

3. 가장 중요한 차이: 생명주기

 1) ARG

이미지 빌드 중에만 존재하고 컨테이너 실행 후에는 접근 불가

 

2)  ENV

빌드 시점부터 설정 가능하며 컨테이너 실행 후에도 유지, 애플리케이션에서 환경 변수로 사용 가능

 

4. 언제 무엇을 써야 할까?

 

  • 빌드할 때만 필요한 값 → ARG
  • 실행 환경에서 필요한 설정값 → ENV

ARG는 빌드 시점 전용 변수이고, ENV는 컨테이너 실행까지 유지되는 환경 변수이다.