构建器
构建器是您可以用来运行构建的 BuildKit daemon。BuildKit 是构建引擎,它解析 Dockerfile 中的构建步骤以生成容器镜像或其他 Artifacts。
您可以创建和管理构建器、检查它们,甚至连接到远程运行的构建器。您可以使用 Docker CLI 与构建器交互。
默认构建器
Docker Engine 自动创建一个构建器,该构建器成为您构建的默认后端。此构建器使用与 daemon 捆绑的 BuildKit 库。此构建器无需配置。
默认构建器直接绑定到 Docker daemon 及其 context。如果您更改 Docker context,您的 default
构建器将指向新的 Docker context。
构建驱动程序
Buildx 实现了一个 构建驱动程序 的概念,用于指代不同的构建器配置。daemon 创建的默认构建器使用 docker
驱动程序。
Buildx 支持以下构建驱动程序
docker
: 使用捆绑到 Docker daemon 中的 BuildKit 库。docker-container
: 使用 Docker 创建专用的 BuildKit 容器。kubernetes
: 在 Kubernetes 集群中创建 BuildKit Pod。remote
: 直接连接到手动管理的 BuildKit daemon。
选定构建器
选定构建器指代当您运行构建命令时默认使用的构建器。
当您运行构建,或者以某种方式使用 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,构建客户端和 daemon (BuildKit) 是解耦的。这意味着您可以从单个客户端使用多个构建器,甚至是远程构建器。
为了确保与旧版本 Docker CLI 的向后兼容性,docker build
命令始终默认使用与 Docker Engine 捆绑在一起的默认构建器。另一方面,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
命令。这可以确保您的 选定构建器 配置得到正确解释。