構建驅動程式

構建驅動程式是 BuildKit 後端執行方式和位置的配置。驅動程式設定是可自定義的,並允許對構建器進行細粒度控制。Buildx 支援以下驅動程式

  • docker: 使用捆綁到 Docker 守護程序的 BuildKit 庫。
  • docker-container: 使用 Docker 建立一個專用的 BuildKit 容器。
  • kubernetes: 在 Kubernetes 叢集中建立 BuildKit Pod。
  • remote: 直接連線到手動管理的 BuildKit 守護程序。

不同的驅動程式支援不同的用例。預設的 docker 驅動程式優先考慮簡單性和易用性。它對高階功能(如快取和輸出格式)的支援有限,並且不可配置。其他驅動程式提供了更大的靈活性和更適合處理高階場景。

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

功能dockerdocker-containerkubernetesremote
自動載入映象
快取匯出✓*
Tarball 輸出
多架構映象
BuildKit 配置外部管理

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

載入到本地映象儲存

與使用預設 docker 驅動程式不同,使用其他驅動程式構建的映象不會自動載入到本地映象儲存中。如果未指定輸出,則構建結果僅匯出到構建快取。

要使用非預設驅動程式構建映象並將其載入到映象儲存中,請在構建命令中使用 --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 標誌。

下一步

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