전체 목록
인프라Medium#288

Docker 이미지 레이어는 빌드 성능에 어떤 영향을 주나요?

#인프라#Docker#Image#Build

답변 포인트

레이어 캐시와 Dockerfile 순서를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다.

Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다.

핵심 개념

핵심 기준은 레이어 캐시와 Dockerfile 순서입니다.

Docker 이미지는 여러 레이어의 합으로 구성됩니다. Dockerfile의 각 명령은 새 레이어를 만들 수 있고, 이전 단계의 입력이 같으면 캐시가 재사용됩니다. 자주 바뀌지 않는 의존성 설치를 소스 복사보다 앞에 두면 코드만 바뀐 빌드에서 설치 단계를 건너뛸 수 있습니다.

동작 흐름

  1. 요구사항을 성능, 안정성, 보안, 복구 목표로 나눠 정의합니다.
  2. 정상 흐름과 장애 흐름에서 각 구성 요소가 어떻게 동작하는지 확인합니다.
  3. 자동화와 관찰 지표로 변경 결과를 검증합니다.
  4. 롤백, 복구, 확장, 비용 관리까지 운영 절차로 문서화합니다.

실제 예시

Dockerfile
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

예시는 핵심 구조를 단순화한 것입니다. 실무에서는 운영 환경, 장애 상황, 보안 요구사항에 맞게 세부 설정을 조정해야 합니다.

실무에서 주의할 점

  • 자동화가 있어도 롤백과 복구 절차를 실제로 연습하지 않으면 장애 때 동작하지 않을 수 있습니다.
  • 관찰 지표가 없으면 장애 원인을 추측에 의존하게 됩니다.
  • 확장은 애플리케이션 코드, 데이터베이스, 네트워크, 외부 의존성 한계를 함께 봐야 합니다.

함께 연결해서 보면 좋은 키워드

Docker, ImageLayer, BuildCache, dockerignore

면접에서 짚으면 좋은 포인트

  • 정상 동작뿐 아니라 장애, 롤백, 관찰 가능성까지 함께 설명하면 실무적인 답변이 됩니다.
  • 설정 예시를 말할 때 보안, 비용, 운영 자동화의 trade-off도 함께 짚는 것이 좋습니다.

정리

한 줄로 정리하면, Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다. 개념의 정의뿐 아니라 장애 시 동작, 운영 지표, 자동화와 복구 전략까지 함께 이해하는 것이 중요합니다.

관련 질문

같은 카테고리/태그 기준