빌드 가비지 컬렉션

빌드 가비지 컬렉션 (Build garbage collection)

가비지 컬렉션(GC)은 주기적으로 실행되며 정렬된 prune 정책 목록을 따릅니다. BuildKit 데몬은 캐시 크기가 너무 커지거나 캐시 나이가 만료되면 빌드 캐시를 정리해요.

출처: 문서

본문

대부분의 사용자에게 기본 GC 동작으로 충분하고 별도 개입이 필요 없어요. 대규모 빌드를 다루는 고급 사용자, 자체 관리 빌더를 쓰는 사용자, 또는 스토리지가 제한된 환경에서는 설정을 커스터마이즈하면 워크플로에 더 잘 맞을 수 있어요.

가비지 컬렉션 정책 (Garbage collection policies)

GC 정책은 빌드 캐시를 어떻게 관리하고 정리할지를 결정하는 규칙 집합이에요. 이 정책에는 캐시 항목을 언제 제거할지에 대한 기준(캐시 나이, 사용 중인 공간, 정리할 캐시 레코드 유형 등)이 포함돼요.

각 GC 정책은 가장 구체적인 기준부터 순서대로 평가되며, 이전 정책이 충분한 캐시를 확보하지 못하면 더 넓은 규칙으로 진행돼요. 이렇게 하면 BuildKit이 캐시 항목의 우선순위를 정해 가장 가치 있는 캐시를 보존하면서도 시스템 성능과 가용성을 유지할 수 있어요.

예를 들어, 나중에 더 넓은 휴리스틱으로 넘어가기 전에 특정 유형의 캐시(예: 프론트엔드나 소스 캐시)를 우선적으로 정리하는 정책을 구성할 수 있어요.

GC 구성하기 (Configuring GC)

GC 동작은 buildkitd.toml 파일의 [worker.containerd] 섹션에서 gc 설정으로 맞춤 구성할 수 있어요. 각 정책은 keepBytes(캐시가 유지할 최대 바이트), keepDuration(캐시 항목을 유지할 기간), filters(정리할 캐시 유형) 등을 지정할 수 있어요.

자체 관리형 빌더를 사용할 때 GC 구성을 적용하려면 docker buildx create --driver docker-container --buildkitd-config로 빌더를 만들 때 구성을 넘겨주면 돼요.

더 알아보기 (Learn more)