构建器
构建器是你可以用来运行构建的 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 命令。这确保了你的选定构建器配置被正确解释。