构建器

构建器是您可以用来运行构建的 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 builddocker buildx build 之间的区别

尽管 docker builddocker 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 命令。这可以确保您的 选定构建器 配置得到正确解释。

附加信息

页面选项