构建驱动程序
目录
构建驱动程序是配置BuildKit后端如何以及在哪里运行的设置。 驱动程序设置是可定制的,并允许对构建器进行细粒度控制。 Buildx支持以下驱动程序:
docker: 使用捆绑到Docker守护进程中的BuildKit库。docker-container: 使用Docker创建一个专用的BuildKit容器。kubernetes: 在Kubernetes集群中创建BuildKit pods。remote: 直接连接到手动管理的BuildKit守护进程。
不同的驱动程序支持不同的使用场景。默认的docker驱动程序优先考虑简单性和易用性。它对高级功能(如缓存和输出格式)的支持有限,并且不可配置。其他驱动程序提供了更多的灵活性,并且更擅长处理高级场景。
下表概述了驱动程序之间的一些差异。
| Feature | docker | docker-container | kubernetes | remote |
|---|---|---|---|---|
| Automatically load image | ✅ | |||
| Cache export | ✓* | ✅ | ✅ | ✅ |
| Tarball output | ✅ | ✅ | ✅ | |
| Multi-arch images | ✅ | ✅ | ✅ | |
| BuildKit configuration | ✅ | ✅ | Managed externally |
* 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
默认加载
Introduced in Buildx version
0.14.0
你可以配置自定义构建驱动程序,使其行为类似于默认的docker驱动程序,并默认将镜像加载到本地镜像存储中。为此,在创建构建器时设置default-load驱动程序选项:
$ docker buildx create --driver-opt default-load=true
请注意,就像使用docker驱动程序一样,如果你使用--output指定了不同的输出格式,结果将不会被加载到镜像存储中,除非你也明确指定--output type=docker或使用--load标志。
下一步是什么
阅读每个驱动程序的说明: