위키득계정 ↗
기술

BuildKit

BuildKit기술
주요 역할
빌드 실행 엔진
중간 표현
LLB
주요 구성
buildkitd와 buildctl
대표 기능
병렬 처리와 캐시
BuildKit은 소스와 빌드 정의를 산출물로 변환하는 빌드 도구 모음이다. 중간 표현으로 의존 관계를 구성하고 작업을 병렬 실행하며 캐시와 여러 출력 형식을 제공한다. Docker의 이미지 빌드에서도 사용하는 실행 엔진이다.

빌드 언어와 실행 엔진

Dockerfile 같은 빌드 정의는 프런트엔드를 통해 LLB라는 중간 표현으로 변환된다. LLB는 작업의 의존 관계를 표현하므로 BuildKit이 필요한 단계를 분석하고 실행할 수 있다. 다른 빌드 언어도 프런트엔드로 연결할 수 있어 Dockerfile 문법에만 한정된 엔진은 아니다.

의존 관계와 캐시

동시에 수행할 수 있는 의존 작업을 처리하고 명령 결과의 캐시를 활용한다. 캐시를 가져오거나 내보내 여러 실행 사이에서 재사용할 수 있으며 자동 정리 기능도 제공한다. 어떤 입력이 바뀌었는지와 캐시를 사용할 수 있는지가 실제 실행할 작업에 영향을 준다.

클라이언트와 산출물

buildkitd 데몬과 buildctl 클라이언트로 구성하며 OCI 런타임이나 containerd 기반 워커를 사용할 수 있다. 컨테이너 이미지뿐 아니라 로컬 디렉터리와 OCI 아카이브 등으로 결과를 출력한다. 빌드 실행 엔진과 그 위에서 사용자가 호출하는 Docker Buildx는 서로 다른 구성 요소다.

관련 문서

Docker Buildx / Dagger 빌드 / Earthly / containerd / 컨테이너 / 프로토콜 버퍼