构建驱动程序
目录
构建驱动程序是关于 BuildKit 后端如何运行以及在何处运行的配置。 驱动程序设置是可定制的,允许对构建器进行细粒度控制。 Buildx 支持以下驱动程序:
docker: 使用捆绑到 Docker 守护程序中的 BuildKit 库。docker-container: 使用 Docker 创建专用的 BuildKit 容器。kubernetes: 在 Kubernetes 集群中创建 BuildKit 的 pods。remote: 直接连接到手动管理的 BuildKit 守护程序。
不同的驱动程序支持不同的使用场景。默认的 docker 驱动程序优先考虑简单性和易用性。它对缓存和输出格式等高级功能的支持有限,且不可配置。其他驱动程序提供了更大的灵活性,更适合处理高级场景。
以下表格概述了不同驱动程序之间的差异。
| 功能 | docker | docker-container | kubernetes | remote |
|---|---|---|---|---|
| 自动加载镜像 | ✅ | |||
| 导出缓存 | ✓* | ✅ | ✅ | ✅ |
| Tarball 输出 | ✅ | ✅ | ✅ | |
| 多架构镜像 | ✅ | ✅ | ✅ | |
| 构建工具配置 | ✅ | ✅ | 由外部管理 |
* 驱动程序 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
默认加载
在 Buildx 版本中引入
0.14.0
您可以将自定义构建驱动程序配置为与默认的docker驱动程序行为类似,并默认将镜像加载到本地镜像存储。为此,在创建构建器时设置default-load驱动程序选项:
$ docker buildx create --driver-opt default-load=true
请注意,就像使用 docker 驱动程序一样,如果您使用 --output 指定不同的输出格式,结果不会加载到镜像存储中,除非您还明确指定 --output type=docker 或使用 --load
标志。
接下来是什么
阅读每个驱动程序的介绍: