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

Docker RUN 명령어와 && 사용 이유: 레이어 구조 관점에서 이해하기

Data Jun 2026. 2. 17. 15:23

Dockerfile에서 RUN은 단순한 실행 명령이 아닙니다.
이미지를 빌드하는 과정에서 실행되고, 그 결과가 하나의 레이어로 저장되는 명령어입니다.

 

예를 들어:

RUN npm ci

이 명령은 이미지 빌드 시 실행되고,
설치 결과가 새로운 레이어로 저장됩니다.

 

여기서 중요한 개념이 하나 있습니다.

RUN 한 줄 = 레이어 하나

 

1. RUN을 여러 줄로 쓰면

RUN npm ci
RUN npm run build

이 경우:

  • 첫 번째 RUN → 레이어 1 생성
  • 두 번째 RUN → 레이어 2 생성

즉, 중간 상태(npm ci만 끝난 상태)도 하나의 레이어로 저장됩니다.

 

2. &&로 묶는 이유

RUN npm ci && npm run build

이렇게 작성하면:

  • RUN 한 번 실행
  • 레이어 하나만 생성

즉,

중간 상태 없이, 최종 결과만 하나의 레이어로 저장됩니다.

 

3. 왜 레이어를 줄이는 게 중요한가?

레이어가 많아질수록:

  • 이미지 용량 증가 가능성
  • 캐시 관리 복잡성 증가
  • 중간 불필요 상태 보존

비유하면 이렇습니다.

RUN을 나눠 쓰는 건 “중간 공사 단계까지 모두 사진 찍어 저장하는 것”
&&로 묶는 건 “완공된 상태만 저장하는 것”

 

4. &&의 또 다른 역할

&&는 앞 명령이 성공해야 다음 명령을 실행합니다.

npm ci && npm run build
  • npm ci 실패 → npm run build 실행 안 함
  • 즉시 빌드 중단

안전성과 일관성을 보장합니다.

 

5. 정리

  • RUN은 이미지 빌드 시 실행되는 명령
  • RUN 한 줄당 하나의 레이어 생성
  • &&로 묶으면 하나의 레이어로 통합
  • 실패 시 즉시 중단되어 안정성 확보

RUN은 빌드 단계에서 레이어를 만드는 명령이며, &&로 묶는 이유는 레이어 수를 줄이고 안정적인 빌드를 만들기 위함입니다.