containerd 이미지 스토어
containerd 이미지 스토어
Docker Desktop은 기본적으로 containerd 를 이미지 스토어로 사용해요. 이미지 스토어는 이미지를 파일시스템에 push, pull, 저장하는 역할을 하는 컴포넌트예요. containerd 이미지 스토어는 멀티 플랫폼 이미지, 이미지 어테스테이션(attestation), 대체 스냅샷터 같은 기능을 지원해요.
본문
containerd란?
containerd는 컨테이너 수명주기와 이미지 관리를 위한 가볍고 일관된 인터페이스를 제공하는 컨테이너 런타임이에요. Docker Engine이 컨테이너를 만들고, 시작하고, 멈추는 데 내부적으로 사용해요.
containerd 이미지 스토어란?
이미지 스토어는 이미지를 파일시스템에 push, pull, 저장하는 컴포넌트예요. containerd 이미지 스토어는 Docker Engine이 네이티브로 다룰 수 있는 이미지 타입의 범위를 넓혀줘요. 저수준 아키텍처 변경이지만, 다양한 새 사용 사례를 열기 위한 전제 조건이에요.
- 어테스테이션이 있는 이미지와 멀티 플랫폼 이미지 빌드
- 독특한 특징을 가진 containerd 스냅샷터 지원 — 예를 들어
stargz는 컨테이너 시작 시 이미지를 지연 pull 하고,nydus와dragonfly는 피어 투 피어 이미지 배포를 지원해요. - Wasm 컨테이너 실행 능력
클래식 이미지 스토어
클래식 이미지 스토어는 containerd 이미지 스토어로 대체된 Docker의 레거시 저장 백엔드예요. 이미지 인덱스나 매니페스트 리스트를 지원하지 않아서 멀티 플랫폼 이미지를 로컬에 로드하거나 어테스테이션이 있는 이미지를 빌드할 수 없어요.
대부분의 사용자에게 클래식 이미지 스토어를 쓸 이유는 없어요. 예전 동작에 맞춰야 하거나 호환성 요구 사항이 있는 경우에만 사용할 수 있어요.
이미지 스토어 전환하기
containerd 이미지 스토어는 Docker Desktop 버전 4.34부터 기본으로 활성화돼요. 스토어를 전환하려면:
- Docker Desktop에서 Settings 로 이동해요.
- General 탭에서 Use containerd for pulling and storing images 옵션을 체크하거나 해제해요.
- Apply 를 선택해요.
참고: Docker Desktop은 클래식 스토어와 containerd 스토어를 별도로 유지해요. 전환하면 비활성 스토어의 이미지와 컨테이너가 디스크에 남아 있지만, 다시 전환할 때까지 숨겨져 있어요.
멀티 플랫폼 이미지 빌드
containerd 이미지 스토어를 쓰면 멀티 플랫폼 이미지를 빌드해서 로컬 이미지 스토어에 로드할 수 있어요. 반면 클래식 이미지 스토어에서는 멀티 플랫폼 빌드가 지원되지 않아요.
$ docker build --platform=linux/amd64,linux/arm64 .
[+] Building 0.0s (0/0)
ERROR: Multi-platform build is not supported for the docker driver.
Switch to a different driver, or turn on the containerd image store, and try again.
Learn more at https://docs.docker.com/go/build-multi-platform/