빌드 드라이버

빌드 드라이버 (Build drivers)

빌드 드라이버는 BuildKit 백엔드가 어디서, 어떻게 실행될지를 정하는 구성이에요. 드라이버 설정은 커스터마이즈할 수 있고 빌더를 세밀하게 제어할 수 있게 해 줘요.

출처: 문서

본문

Buildx가 지원하는 드라이버는 다음과 같아요:

  • docker: Docker 데몬에 내장된 BuildKit 라이브러리 사용
  • docker-container: Docker를 사용해 전용 BuildKit 컨테이너 생성
  • cloud: Docker Build Cloud의 관리형 빌더에 연결
  • kubernetes: Kubernetes 클러스터에 BuildKit 파드 생성
  • remote: 수동으로 관리하는 BuildKit 데몬에 직접 연결

docker 드라이버는 단순함과 사용 편의성을 우선해요. 하지만 캐싱이나 출력 형식 같은 고급 기능 지원은 제한적이고 구성할 수도 없어요. 다른 드라이버들은 더 많은 유연성을 제공하고 고급 시나리오를 더 잘 처리해요.

드라이버 간 차이를 요약한 표가 원본 문서에 있어요. 예를 들어 docker 드라이버는 모든 캐시 export 옵션을 지원하진 않아요. 자세한 내용은 Cache storage backends 문서를 참고해요.

로컬 이미지 저장소로 로드하기 (Loading to local image store)

드라이버에 따라 빌드 결과가 로컬 이미지 저장소로 로드되는 방식이 달라요. 예를 들어 Docker Build Cloud를 쓰는 경우, 빌드가 단일 플랫폼을 대상으로 하고 클라우드 노드 하나에서 실행되면 이미지가 자동으로 로드돼요. 다른 드라이버에서는 출력(output)을 지정하지 않으면 빌드 결과가 빌드 캐시에만 남아요.

docker build --load 플래그를 쓰면 결과를 로컬 이미지 저장소로 로드할 수 있어요:

$ docker buildx build --load -t <image> --builder=container .
...
=> exporting to oci image format                                                                                                      7.7s
=> => exporting layers                                                                                                                4.9s
=> => exporting manifest sha256:4e4ca161fa338be2c303445411900ebbc5fc086153a0b846ac12996960b479d3                                      0.0s
=> => exporting config sha256:adf3eec768a14b6e183a1010cb96d91155a82fd722a1091440c88f3747f1f53f                                        0.0s
=> => s...

--load는 빌드 결과를 로컬 Docker 이미지 저장소에 넣어서 docker run 등으로 바로 쓸 수 있게 해 줘요.

더 알아보기 (Learn more)