構建器
構建器是你可以用來執行構建的 BuildKit 守護程序。BuildKit 是構建引擎,它解決了 Dockerfile 中的構建步驟,以生成容器映象或其他工件。
你可以建立和管理構建器、檢查它們,甚至連線到遠端執行的構建器。你可以使用 Docker CLI 與構建器互動。
預設構建器
Docker Engine 自動建立一個構建器,該構建器成為你的構建的預設後端。此構建器使用與守護程序捆綁在一起的 BuildKit 庫。此構建器無需配置。
預設構建器直接繫結到 Docker 守護程序及其上下文。如果你更改 Docker 上下文,你的 default
構建器將引用新的 Docker 上下文。
構建驅動程式
Buildx 實現了構建驅動程式的概念,以引用不同的構建器配置。守護程序建立的預設構建器使用 docker
驅動程式。
Buildx 支援以下構建驅動程式:
docker
:使用捆綁在 Docker 守護程序中的 BuildKit 庫。docker-container
:使用 Docker 建立一個專用的 BuildKit 容器。kubernetes
:在 Kubernetes 叢集中建立 BuildKit pod。remote
:直接連線到手動管理的 BuildKit 守護程序。
選定的構建器
選定的構建器指的是當你執行構建命令時預設使用的構建器。
當你執行構建或以某種方式使用 CLI 與構建器互動時,你可以使用可選的 --builder
標誌或 BUILDX_BUILDER
環境變數來按名稱指定構建器。如果你未指定構建器,則使用選定的構建器。
使用 docker buildx ls
命令檢視可用的構建器例項。構建器名稱旁邊的星號 (*
) 表示選定的構建器。
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
default * docker
default default running v0.11.6 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
my_builder docker-container
my_builder0 default running v0.11.6 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
選擇其他構建器
要在構建器之間切換,請使用 docker buildx use <name>
命令。
執行此命令後,當你呼叫構建時,你指定的構建器將自動被選中。
docker build
和 docker buildx build
之間的區別
儘管 docker build
是 docker buildx build
的別名,但這兩個命令之間存在細微差別。使用 Buildx,構建客戶端和守護程序 (BuildKit) 是解耦的。這意味著你可以從單個客戶端使用多個構建器,甚至是遠端構建器。
docker build
命令始終預設為使用 Docker Engine 捆綁的預設構建器,以確保與舊版本的 Docker CLI 的向後相容性。另一方面,docker buildx build
命令在將構建傳送到 BuildKit 之前,會檢查你是否已將不同的構建器設定為預設構建器。
要將 docker build
命令與非預設構建器一起使用,你必須:
使用
--builder
標誌或BUILDX_BUILDER
環境變數明確指定構建器。$ BUILDX_BUILDER=my_builder docker build . $ docker build --builder my_builder .
執行以下命令將 Buildx 配置為預設客戶端:
$ docker buildx install
這會更新你的 Docker CLI 配置檔案,以確保你的所有與構建相關的命令都透過 Buildx 路由。
提示要撤消此更改,請執行
docker buildx uninstall
。
通常,我們建議當你想要使用自定義構建器時,使用 docker buildx build
命令。這確保了你的選定構建器配置被正確解釋。