도커의 레이어 기반 아키텍처는 이미지를 구성하고 관리하는 핵심적인 방법론입니다. 이 아키텍처의 이해는 도커 이미지가 어떻게 효율적으로 생성되고 공유될 수 있는지를 파악하는 데 중요합니다.
레이어 기반 아키텍처의 기본 개념
- 레이어(Layer): 도커 이미지는 여러 개의 레이어로 구성됩니다. 각 레이어는 이미지를 생성하는 과정에서의 변경 사항(파일 추가, 수정, 삭제 등)을 나타냅니다.
- 이미지(Image): 여러 레이어의 합으로 구성되며, 불변(Immutable)의 특성을 가집니다.
- 컨테이너(Container): 이미지를 기반으로 생성되며, 실행 중인 상태의 이미지입니다. 컨테이너는 자신만의 쓰기 가능한 레이어(Write Layer)를 가지며, 여기에 실행 중 발생하는 모든 변경 사항이 저장됩니다.
레이어 기반 아키텍처의 장점
- 재사용성(Reusability): 공통 레이어는 여러 이미지 간에 공유될 수 있어, 동일한 기반 레이어를 사용하는 이미지는 추가 저장 공간을 사용하지 않습니다.
- 효율성(Efficiency): 이미지 레이어는 한 번 다운로드하면 캐시되므로, 동일한 레이어를 가진 다른 이미지를 다운로드할 때 더 빠르고 효율적입니다.
- 버전 관리 및 롤백(Version Control and Rollback): 각 레이어는 변경 사항의 기록을 의미하므로, 이전 상태로 롤백하거나 버전 관리가 용이합니다.
- 저장 공간 최적화(Storage Optimization): 중복된 데이터를 여러 복사본으로 저장하지 않고 공유함으로써 저장 공간을 절약합니다.
작동 방식
- 도커 파일(Dockerfile): 빌드 과정에서 각 명령어(RUN, COPY, ADD 등)는 새로운 레이어를 생성합니다.
- 캐싱: 이미 빌드된 레이어는 캐시되어 재사용됩니다. 이는 도커 빌드 시간을 크게 줄여줍니다.
- 공유: 동일한 레이어를 사용하는 다른 컨테이너나 이미지는 해당 레이어를 공유합니다.
실용적인 측면
레이어 기반 아키텍처는 도커 이미지의 크기를 최소화하고, 네트워크를 통한 이미지 전송 시간을 줄이며, 디스크 사용을 최적화합니다. 예를 들어, 여러 애플리케이션들이 동일한 기반 이미지(예: Ubuntu, Alpine)를 사용한다면, 이 기반 이미지의 레이어는 한 번만 저장되고 모든 애플리케이션에서 공유됩니다.
'Docker' 카테고리의 다른 글
OS의 기능과 구조 (0) | 2023.12.20 |
---|---|
docker의 기본 명령어 (with 고급 명령어) (0) | 2023.12.19 |
Docker 개념 및 가상머신(VM)과의 차이점 (0) | 2023.12.19 |