도커 이미지 레이어 - 1 : 이미지 레이어

1-1. Layer

도커 이미지는 layer와 메타정보로 구성되어 있다.

// 이미지 pull
docker pull busybox:1.34.1
 
// busybox 이미지 메타정보 확인
docker inspect busybox:1.34.1

도커 이미지 레이어 메타정보는 /var/lib/docker/image/overlay2/layerdb/sha256에 저장된다.


1-2. 도커 레이어 데이터(digest) 위치

도커 layer 데이터를 digest(레이어 데이터를 해시한 결과)라고 부른다.

  • digest는 /var/lib/docker/<sotrage-driver> 디렉터리에 저장된다.
  • 레이어 메타정보에서 cache-id 파일에 레이어 digest가 있다.

1-3. 중간 정리

  • 도커 이미지는 레이어로 구성되어 있고, 레이어 메타정보와 레이어 데이터를 따로 관리한다.

1-4. 레이어 읽기/쓰기 속성

도커 이미지 레이어는 읽기 속성만 가지고 있다.

  • 컨테이너 이미지가 생성되면 컨테이너 레이어가 생성되고 쓰기 속성을 가진다.
    • 컨테이너가 작업하는 데이터(파일, 디렉터리)를 저장하기 위해 쓰기 속성이 필요하다.
  • 컨테이너가 종료되면 컨테이너 레이어가 삭제된다.(컨테이너에서 작업한 데이터가 날아감)

1-5. 컨테이너 layer 생성 확인

  • 279515…-init → 초기화에 사용되는 레이어
  • 279515… → 새로 생긴 컨테이너 레이어

1-6 유니온 파일 시스템(Union file system)

컨테이너가 실행되면 도커 이미지 레이어를 참조하고 컨테이너 레이어를 생성한다.

이미지 레이어, 컨테이너 레이어는 도커 컨테이너에 합쳐서 파일 시스템으로 마운트 된다.

  • lowerdir : 도커 이미지 레이어가 위치하고 읽기 전용이다.
  • upperdir : 컨테이너 이미지가 위치하고 쓰기 속성이 있다.
  • merged : 위에서 보는 lowedir + upperdir
    • 같은 파일을 작업할 경우 upperdir이 우선순위를 갖는다.

1-7. 정리

도커 이미지 구조의 핵심: 레이어

  • 도커 이미지는 여러 개의 읽기 전용 레이어로 구성됨
  • 컨테이너가 실행될 때:
    • 이미지 레이어(Read-only)
    • 컨테이너 레이어(Read-Write)
      → 두 레이어가 파일 시스템으로 마운트됨

레이어 구조를 왜 공부해야 할까?

  • 이미지 최적화에 핵심
  • 각 레이어는 0바이트 이상의 크기를 가짐
  • 실무에서는 디스크 용량 절약을 위해
    불필요한 레이어를 줄이고, 크기를 최소화하는 것이 중요함

출처