Docker를 사용하다 보면 이미지(Image)와 컨테이너(Container)를 많이 접하게 됩니다. Docker 이미지가 어떻게 구성되는지 이해하는 것은 매우 중요합니다. Docker 이미지의 구성 요소 중 하나인 레이어(Layer)에 대해 알아보겠습니다.
Docker 이미지는 컨테이너를 생성하기 위한 템플릿 역할을 합니다. 이 이미지는 여러 개의 읽기 전용 레이어로 구성되어 있으며, 각 레이어는 이미지의 파일 시스템에 변경 사항을 기록합니다. 이러한 레이어들은 Union File System(유니온 파일 시스템)을 통해 하나의 파일 시스템으로 합쳐집니다.
각 레이어는 이미지의 변경 사항을 포함하며, 이는 새로운 파일을 추가하거나 기존 파일을 수정하거나 삭제하는 것을 의미합니다. Docker는 이러한 레이어들을 효율적으로 관리하여 이미지 빌드 속도를 향상시키고, 저장 공간을 절약합니다.
Docker 이미지의 첫 번째 레이어는 베이스 이미지(Base Image)입니다. 이는 운영 체제의 기본 파일 시스템을 포함하며, 다른 모든 레이어의 기반이 됩니다.
베이스 이미지 위에 추가되는 레이어들을 중간 레이어(Intermediate Layer)라고 합니다. 각 중간 레이어는 Dockerfile의 명령어에 의해 생성됩니다. 예를 들어, RUN
, COPY
, ADD
명령어는 새로운 중간 레이어를 생성합니다.
최종 레이어는 컨테이너를 실행하기 위해 필요한 모든 파일과 설정을 포함합니다. 이 레이어는 읽기 전용이며, 컨테이너가 생성될 때 읽기-쓰기 레이어가 이 위에 추가됩니다.
이미지의 크기를 줄이기 위해 불필요한 레이어를 최소화하는 것이 좋습니다. 이를 위해 다음과 같은 방법을 사용할 수 있습니다:
예시:
# Before optimization
RUN apt-get update
RUN apt-get install -y python
# After optimization
RUN apt-get update && apt-get install -y python