建置驅動程式

建置驅動程式是用於設定 BuildKit 後端如何及在哪處執行的組態。驅動程式設定是可自訂的,並允許對建置器進行細緻的控制。Buildx 支援下列驅動程式

  • docker:使用 Docker daemon 中捆綁的 BuildKit 函式庫。
  • docker-container:使用 Docker 建立專用的 BuildKit 容器。
  • kubernetes:在 Kubernetes 叢集中建立 BuildKit pod。
  • remote:直接連線到手動管理的 BuildKit daemon。

不同的驅動程式支援不同的使用案例。預設的 docker 驅動程式優先考慮簡單性和易用性。它對快取和輸出格式等進階功能的支援有限,而且不可設定。其他驅動程式提供更大的彈性和更擅長處理進階情況。

下表概述了驅動程式之間的一些差異。

功能dockerdocker-containerkubernetesremote
自動載入映像檔
快取匯出✓*
Tarball 輸出
多架構映像檔
BuildKit 設定外部管理

* docker 驅動程式不支援所有快取匯出選項。如需詳細資訊,請參閱 快取儲存後端

載入到本機映像檔存放區

與使用預設 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
=> => sending tarball                                                                                                                 2.8s
=> importing to docker

使用此選項,映像檔會在建置完成後顯示在映像檔存放區中

$ docker image ls
REPOSITORY                       TAG               IMAGE ID       CREATED             SIZE
<image>                          latest            adf3eec768a1   2 minutes ago       197MB

預設載入

引進於 Buildx 版本 0.14.0

您可以將自訂建置驅動程式設定為與預設 docker 驅動程式類似的行為,並在預設情況下將映像檔載入到本機映像檔存放區。為此,請在建立建置器時設定 default-load 驅動程式選項

$ docker buildx create --driver-opt default-load=true

請注意,就像使用 docker 驅動程式一樣,如果您使用 --output 指定不同的輸出格式,則結果將不會載入到映像檔存放區,除非您也明確指定 --output type=docker 或使用 --load 旗標。

後續步驟

閱讀關於每個驅動程式的資訊