인프라 & 클라우드 · 기초
Dockerfile로 이미지를 빌드할 때 레이어 캐시(build cache)는 어떻게 동작하며, 캐시를 잘 활용하려면 명령어 순서를 어떻게 배치하는 것이 좋은가요?
힌트 · 변경이 적은 레이어를 앞에, 자주 바뀌는 부분을 뒤에 두는 캐시 무효화 원리 관점에서 접근하세요.
레이어해시변경불변성최적화
모범답안
Dockerfile로 이미지를 빌드할 때 레이어 캐시는 각 명령어 실행 결과를 이미지 레이어로 저장하고 재사용하는 메커니즘입니다. Docker는 각 레이어의 명령어와 해당 명령어에 사용된 파일(예: COPY, ADD)의 해시 값을 계산하여 캐시 히트를 결정합니다. 만약 명령어와 파일의 해시 값이 이전 빌드와 동일하면, 해당 레이어는 캐시에서 가져와 사용하며 빌드 시간을 단축시킵니다.
캐시를 효과적으로 활용하려면 변경이 적고 자주 사용되는 명령어(예: OS 패키지 설치, 라이브러리 의존성 설치)를 앞에 배치하고, 자주 변경될 수 있는 애플리케이션 소스 코드 복사(COPY)와 같은 명령어는 뒤에 배치하는 것이 좋습니다. 이렇게 하면 애플리케이션 코드가 변경되어도 이전 레이어의 캐시를 그대로 활용할 수 있어 빌드 속도를 크게 향상시킬 수 있습니다. 즉, 변경에 덜 민감한 부분을 먼저 빌드하여 캐시를 최대한 활용하는 것이 핵심입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 DevOps / CI·CD 면접 질문
- CI 파이프라인의 일반적인 단계(빌드, 테스트 등)를 순서대로 설명하고, 각 단계에서 무엇을 하는지 말씀해주세요.
- CI(지속적 통합)와 CD(지속적 배포/전달)는 각각 무엇을 의미하며, Continuous Delivery와 Continuous Deployment는 어떻게 다른가요?
- 도커 이미지가 레이어(layer)로 구성된다는 것은 무슨 의미이며, 레이어 구조가 어떤 이점을 주나요?
- 컨테이너와 가상머신(VM)의 차이를 격리 방식과 리소스 사용 측면에서 설명해주세요.
- Docker와 가상머신(VM)의 차이점에 대해 설명해주세요.
- Dockerfile의 주요 명령어에 대해 설명해주세요.