도커 이미지 레이어 - 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바이트 이상의 크기를 가짐
- 실무에서는 디스크 용량 절약을 위해
→ 불필요한 레이어를 줄이고, 크기를 최소화하는 것이 중요함
