Dockerfile 작성할 때 ENV와 ARG의 차이

dockerfile에는 환경변수로 사용할 수 있는 ENV와 ARG가 있습니다.

둘을 어떻게 구분해야할지 난해해서 조사해봤습니다.

Dockerfile의 처리 과정

Dockerfile은 Docker engine이 이미지를 생성하기 위해 읽는 파일이며, 이 과정을 이미지 빌드라고 합니다.

빌드된 이미지는 레지스트리에 저장되었다가 docker run 이나 docker-compose up 등으로 컨테이너 인스턴스를 생성할 때 사용됩니다.

ENV와 ARG의 용례 구분

컨테이너 생성 명령어에서 ENVARG 모두 지정할 수 있습니다.

ARG 지시문은 빌드 중에 유저가 전달할 수 있는 변수를 정의합니다. ARG 값을 수정하면 새로운 이미지 생성되며, 기존에 생성된 이미지에서 수정할 수 없는 지시문입니다.

ENV 지시문은 OS 환경 변수를 설정합니다. ENV로 지정한 값은 빌드된 이미지에서 같은 이름의 환경변수를 덮어씁니다. 따라서 새로 빌드하지 않고 수정하여 재사용할 수 있습니다.

따라서 만약 빌드 시간에 이미지를 재구성하려면 ARG로 지정하는 것이 좋습니다. 하지만 이미 빌드된 이미지를 수정하지 않고 같은 런타임에 재구성하려면 (같은 이미지에서 세팅만 다르게 하려면) ENV를 사용하는 것이 좋습니다.

Reference

Stackoverflow / ARG or ENV, which one to use in this case?

Dockerfile Reference / Impact on build caching

2024

vscode task 문법

less than 1 minute read

테스크에서 지정가능한 프로퍼티 예시

python metaclass 실습

less than 1 minute read

클래스를 생성하는 클래스인 metaclass 작성해보기

Back to top ↑

2023

smach preemption

1 minute read

번역글 : smach/Tutorials/StatePreemption Implementation https://wiki.ros.org/smach/Tutorials/State%20Preemption%20Implementation

태초의 프로세스

4 minute read

우분투가 처음 실행 되었을 때 프로세스가 어떻게 생성되는지

Back to top ↑

2022

Back to top ↑

2021

ROS란

1 minute read

ROS

(백준 / Dijkstra) 녹색 옷 입은놈이 젤다지

2 minute read

문제 요약 젤다는 4방향으로 움직인다 움직일때마다 해당 공간의 코인을 휙득한다 0,0부터 시작해 N-1,N-1 까지 가면서 코인을 최대한 적게 휙득하는 경우의 코인수를 출력하라

(백준 ) 백준 저울

1 minute read

문제 요약 전형적인 DP 문제. 추가 여러개 주어진다. 주어진 추의 합으로 재지 못하는 무게를 출력하라.

(백준 / DP) 200년간 폐관수련했더니 PS 최강자가 된 건에 대하여

1 minute read

문제 요약 순서대로 대회에 참여해 상금을 타려 한다. n-1번 대회에 참여하면서 얻은 상금 합이 n번 대회 제한을 넘어서면 참가할 수 없다. N개의 대회중 N-1개의 대회에 참여할 수 있는지 확인하라 N < \(10^6\), 대회 상금, 대회 상금제한 <...

(백준 / 완전탐색) 양치기 꿍

1 minute read

문제 요약 R, C크기의 맵이 주어진다.(3<->250) 맵은 양, 늑대, 벽, 빈공간으로 이루어져있다. 벽으로 둘러쌓인 공간에서 양과 늑대 중 수가 많은 쪽이 살아남는다. 살아남은 양과 늑대의 수를 출력하라

Back to top ↑