빌드 언어와 실행 엔진
Dockerfile 같은 빌드 정의는 프런트엔드를 통해 LLB라는 중간 표현으로 변환된다. LLB는 작업의 의존 관계를 표현하므로 BuildKit이 필요한 단계를 분석하고 실행할 수 있다. 다른 빌드 언어도 프런트엔드로 연결할 수 있어 Dockerfile 문법에만 한정된 엔진은 아니다.
의존 관계와 캐시
동시에 수행할 수 있는 의존 작업을 처리하고 명령 결과의 캐시를 활용한다. 캐시를 가져오거나 내보내 여러 실행 사이에서 재사용할 수 있으며 자동 정리 기능도 제공한다. 어떤 입력이 바뀌었는지와 캐시를 사용할 수 있는지가 실제 실행할 작업에 영향을 준다.
클라이언트와 산출물
buildkitd 데몬과 buildctl 클라이언트로 구성하며 OCI 런타임이나 containerd 기반 워커를 사용할 수 있다. 컨테이너 이미지뿐 아니라 로컬 디렉터리와 OCI 아카이브 등으로 결과를 출력한다. 빌드 실행 엔진과 그 위에서 사용자가 호출하는 Docker Buildx는 서로 다른 구성 요소다.
관련 문서
Docker Buildx / Dagger 빌드 / Earthly / containerd / 컨테이너 / 프로토콜 버퍼