构建驱动

构建驱动是用于配置 BuildKit 后端如何以及在哪里运行的设置。驱动设置可自定义,允许对构建器进行精细控制。Buildx 支持以下驱动:

  • docker: 使用绑定到 Docker daemon 中的 BuildKit 库。
  • docker-container: 使用 Docker 创建一个专用的 BuildKit 容器。
  • kubernetes: 在 Kubernetes 集群中创建 BuildKit Pod。
  • remote: 直接连接到手动管理的 BuildKit daemon。

不同的驱动支持不同的用例。默认的 docker 驱动优先考虑简单性和易用性。它对缓存和输出格式等高级功能的支持有限,并且不可配置。其他驱动提供了更大的灵活性,更适合处理高级场景。

下表概述了驱动之间的一些区别。

功能dockerdocker-containerkubernetesremote
自动加载镜像
缓存导出✓*
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 Buildx 0.14.0 及更高版本

您可以将自定义构建驱动配置为与默认 `docker` 驱动类似的方式运行,并默认将镜像加载到本地镜像存储。为此,在创建构建器时设置 `default-load` 驱动选项:

$ docker buildx create --driver-opt default-load=true

请注意,与 `docker` 驱动一样,如果您使用 `--output` 指定了不同的输出格式,则除非您也明确指定 `--output type=docker` 或使用 `--load` 标志,否则结果将不会加载到镜像存储。

下一步

阅读每个驱动的详细信息

页面选项