ENV vs ARG

Younghwan Cha·2022년 9월 23일
0

Docker

목록 보기
11/18
post-thumbnail

오늘은 도커를 포장할 때 자주 마주하지만 아무생각 없이 사용하곤했던 ENV 와 ARG 에 관해서
정리해보려한다.

ENV, ARG...같은 역할 하는거 아닌가..?

변수를 다룬다는 측면에서는 그 역할이 같다.
하지만, 분명히 둘에는 차이점이 존재한다.

ENV

ENV <key> <value>
ENV <key>=<value>
  • 이미지 빌드를 위해 Dockerfile 내에서 사용하기 위한 값이다.
  • docker inspect 를 통해서 사용한 env 값을 확인 할 수 있다.
  • docker run 명령어에서 -e 혹은 --env = 옵션으로 전달해서 덮어 쓸 수 있다.

ARG

ARG <name> [=<default value>]
  • 이미지 빌드를 위해 Dockerfile 내에서 사용하기 위한 값이다.
  • docker build 명령어에서 --build-arg 옵션으로 전달해서 덮어 쓸 수 있다.
  • 빌드 시점에서 사용하기 때문에, 빌드 이후 이미지를 사용하는 docker run 시점에서 바꿀 수 없다.
  • 아래와 같이 ARG 는 FROM 에서만 사용이 가능하기 때문에, 다른 FROM 내부에서 사용하려면 다시 선언해야 사용이 가능하다.

아래와 같이 ARG 를 사용할 경우 변경 사항이 생길 경우 가장 상단의 ARG 만 수정하면 되기 때문에
유지 보수에 용이하다.

ARG ubuntu_versio=22.04
  
FROM ubuntu${ubuntu_version} AS builder

ARG ubuntu_version

FROM ubuntu
  
ARG ubuntu_version
profile
개발 기록

0개의 댓글