構建驅動程式
目錄
構建驅動程式是關於 BuildKit 後端如何以及在何處執行的配置。驅動程式設定可自定義,並允許對構建器進行精細控制。Buildx 支援以下驅動程式:
docker
:使用捆綁在 Docker 守護程式中的 BuildKit 庫。docker-container
:使用 Docker 建立一個專用的 BuildKit 容器。kubernetes
:在 Kubernetes 叢集中建立 BuildKit pod。remote
:直接連線到手動管理的 BuildKit 守護程式。
不同的驅動程式支援不同的用例。預設的 docker
驅動程式優先考慮簡單性和易用性。它對快取和輸出格式等高階功能的支援有限,並且不可配置。其他驅動程式提供更大的靈活性,更擅長處理高階場景。
下表概述了驅動程式之間的一些差異。
特性 | docker | docker-container | kubernetes | remote |
---|---|---|---|---|
自動載入映象 | ✅ | |||
快取匯出 | ✓* | ✅ | ✅ | ✅ |
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
預設載入
您可以配置自定義構建驅動程式,使其行為類似於預設的 docker
驅動程式,並預設將映象載入到本地映象儲存中。為此,在建立構建器時設定 default-load
驅動程式選項:
$ docker buildx create --driver-opt default-load=true
請注意,與 docker
驅動程式一樣,如果您使用 --output
指定不同的輸出格式,則除非您還明確指定 --output type=docker
或使用 --load
標誌,否則結果將不會載入到映象儲存中。
接下來做什麼
閱讀每個驅動程式的詳細資訊