[Docker] 도커의 레이어(Layer) 란?

HeungJun Kim·2024년 6월 21일
0

Docker의 레이어(Layer)에 대해 알아보자

Docker를 사용하다 보면 이미지(Image)와 컨테이너(Container)를 많이 접하게 됩니다. Docker 이미지가 어떻게 구성되는지 이해하는 것은 매우 중요합니다. Docker 이미지의 구성 요소 중 하나인 레이어(Layer)에 대해 알아보겠습니다.

Docker 이미지란?

Docker 이미지는 컨테이너를 생성하기 위한 템플릿 역할을 합니다. 이 이미지는 여러 개의 읽기 전용 레이어로 구성되어 있으며, 각 레이어는 이미지의 파일 시스템에 변경 사항을 기록합니다. 이러한 레이어들은 Union File System(유니온 파일 시스템)을 통해 하나의 파일 시스템으로 합쳐집니다.

레이어의 구조

각 레이어는 이미지의 변경 사항을 포함하며, 이는 새로운 파일을 추가하거나 기존 파일을 수정하거나 삭제하는 것을 의미합니다. Docker는 이러한 레이어들을 효율적으로 관리하여 이미지 빌드 속도를 향상시키고, 저장 공간을 절약합니다.

베이스 이미지(Base Image)

Docker 이미지의 첫 번째 레이어는 베이스 이미지(Base Image)입니다. 이는 운영 체제의 기본 파일 시스템을 포함하며, 다른 모든 레이어의 기반이 됩니다.

중간 레이어(Intermediate Layer)

베이스 이미지 위에 추가되는 레이어들을 중간 레이어(Intermediate Layer)라고 합니다. 각 중간 레이어는 Dockerfile의 명령어에 의해 생성됩니다. 예를 들어, RUN, COPY, ADD 명령어는 새로운 중간 레이어를 생성합니다.

최종 레이어(Final Layer)

최종 레이어는 컨테이너를 실행하기 위해 필요한 모든 파일과 설정을 포함합니다. 이 레이어는 읽기 전용이며, 컨테이너가 생성될 때 읽기-쓰기 레이어가 이 위에 추가됩니다.

레이어의 특성

  • 불변성(Immutability): 한 번 생성된 레이어는 변경될 수 없습니다. 변경이 필요하면 새로운 레이어가 생성됩니다.
  • 캐싱(Caching): Docker는 레이어를 캐싱하여 이미 빌드된 레이어를 재사용합니다. 이는 이미지 빌드 속도를 크게 향상시킵니다.
  • 공유성(Shareability): 동일한 레이어는 여러 이미지 간에 공유될 수 있습니다. 이는 저장 공간을 절약하는 데 도움이 됩니다.

레이어 관리

이미지의 크기를 줄이기 위해 불필요한 레이어를 최소화하는 것이 좋습니다. 이를 위해 다음과 같은 방법을 사용할 수 있습니다:

  1. 멀티 스테이지 빌드(Multi-stage build): 빌드 과정에서 중간 레이어를 제거하여 최종 이미지를 경량화할 수 있습니다.
  2. 명령어 최적화: Dockerfile에서 여러 명령어를 하나의 명령어로 결합하여 불필요한 레이어 생성을 방지합니다.

예시:

# Before optimization
RUN apt-get update
RUN apt-get install -y python

# After optimization
RUN apt-get update && apt-get install -y python
profile
Computer Vision / ADAS / DMS / Face Recognition

0개의 댓글