[도커] 쌓아보며 익히는 Docker Layer 개념

2026. 5. 22. 09:03·인프라/Docker

 

회사 업무를 하다 보면, Docker 이미지가 기대한 대로 재사용되지 않는 순간이 있다.

이번에 내가 겪은 것도 비슷한 문제였다. 공통으로 사용하는 core 이미지를 만들고, 그 위에 서비스별 수정을 더해 여러 개의 이미지를 운영하고 있었는데, 어느 순간부터 이 공통 core가 재사용되지 않고 pull하는 데 시간이 오래 걸렸다.

공통 core의 매니페스트를 열어보니, 특정 시점부터 같은 소스코드에서 만들어진 이미지인데도 layer의 digest가 달라진 것을 확인할 수 있었다.  

그래서 디버깅을 하는 김에 Docker Image Layer에 대해 다시 공부해보기로 했다.  

먼저 베이스 이미지를 만들고, 그 위에 작은 수정을 더한 뒤 Docker Hub에 올려서 pull할 때 layer가 재사용되는지 직접 확인해보려 한다.

 

기준이 되는 베이스 이미지 - ubuntu:22.04

ubuntu:22.04 이미지를 pull 하고 layer를 확인할 예정이다.

#image pull
docker pull ubuntu:22.04
#inspect로 이미지의 메타데이터 확인
docker inspect ubuntu:22.04

 

RootFS.Layers에 sha256 으로 시작하는 레이어가 있는 것을 볼 수 있다.
  • sha 256 으로 시작하는 문자열들은 레이어를 SHA-256으로 해시한 값이 256비트(64자리 16진수)로 표현된다
  • 즉, 레이어에 1바이트에 변경만 있어도 다른 문자열로 표현된다.

 

수정된 이미지 - my-ubuntu:latest

ubuntu:22.04를 베이스 이미지로 직접 수정하여 빌드하고자 한다.

# BaseImage 
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y vim && rm -rf /var/lib/apt/lists/*

#command
docker build -t my-ubuntu:latest

Dockerfile 을 통해 빌드할 이미지의 설명서를 만들었고 빌드를 진행했다.

레이어가 1개에서 3개로 늘어났고 특히 첫번째 레이어는 유지가 되면서 두개가 추가된 점을 확인할 수 있다.

즉, docker pull ubuntu:22.04 를 하면서 미리 pull 된 layer 가 재사용된 것이다.

 

이미지 pull 시에 Layer 재사용 확인

새로 만든 이미지를 docker hub 에 올렸고 ubuntu:22.04 를 사전에 pull 하기 전 후로 my-ubuntu 이미지의 pull 과정을 비교해본다.

 

ubuntu:22.04 pull 하기 전

  • 기존 3개의 레이어들이 전부 다운로드 되고 있다.

ubuntu:22.04 pull 한 후

  • 첫번째 레이어는 Already exists 로 표현되면서 재사용 되는 모습을 보여준다
참고
 - pull 로그에 나오는 12자리 문자열은 압축된 layer digest의 앞 12자리다.
- `docker inspect` RootFS.Layers의 해시는 압축 해제된 layer(DiffID) 기준이라 값이 다르다.
- `docker manifest inspect` 하면 pull 로그와 동일한 압축 기준 digest 전체를 볼 수 있다.

'인프라 > Docker' 카테고리의 다른 글

[트러블 슈팅] Docker 가 의문사 했다?  (0) 2026.06.20
'인프라/Docker' 카테고리의 다른 글
  • [트러블 슈팅] Docker 가 의문사 했다?
Hun's blog
Hun's blog
  • Hun's blog
    언젠가는 풍성해질 개발블로그
    Hun's blog
  • 홈 태그 방명록
  • 전체
    오늘
    어제
    • 전체 글 (11)
      • 자바스크립트 (2)
        • 표준 내장 객체 (2)
      • 인프라 (7)
        • Docker (2)
        • Kubernetes (4)
        • 홈서버 (1)
      • 회고 (1)
      • 파이썬 (1)
        • GIL 제거 동향 (1)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Hun's blog
[도커] 쌓아보며 익히는 Docker Layer 개념
상단으로

티스토리툴바