构建驱动程序
目录
构建驱动程序是 BuildKit 后端运行方式和位置的配置。 驱动程序设置是可自定义的,并允许对生成器进行精细控制。 Buildx 支持以下驱动程序:
docker
:使用捆绑到 Docker 守护程序中的 BuildKit 库。docker-container
:使用 Docker 创建专用的 BuildKit 容器。kubernetes
:在 Kubernetes 集群中创建 BuildKit Pod。remote
:直接连接到手动管理的 BuildKit 守护进程。
不同的驱动程序支持不同的用例。默认驱动程序
优先考虑简单性和易用性。它对高级
缓存和输出格式等功能,并且不可配置。其他驱动程序
提供更大的灵活性,并且更擅长处理高级方案。docker
下表概述了驱动程序之间的一些差异。
特征 | docker | docker-container | kubernetes | remote |
---|---|---|---|---|
自动加载镜像 | ✅ | |||
缓存导出 | ✓* | ✅ | ✅ | ✅ |
Tarball 输出 | ✅ | ✅ | ✅ | |
多 Arch 镜像 | ✅ | ✅ | ✅ | |
BuildKit 配置 | ✅ | ✅ | 外部管理 |
* docker
驱动程序不支持所有缓存导出选项。
有关更多信息,请参阅缓存存储后端。
加载到本地镜像存储
与使用默认驱动程序不同,使用其他驱动程序构建的镜像
不会自动加载到本地镜像存储中。如果未指定
output,则构建结果仅导出到构建缓存中。docker
要使用非默认驱动程序构建镜像并将其加载到镜像存储中,
将标志与 build 命令一起使用:--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
您可以将自定义构建驱动程序配置为与
default 驱动程序,并默认将镜像加载到本地镜像存储。
为此,请在创建生成器时设置 driver 选项:docker
default-load
$ docker buildx create --driver-opt default-load=true
请注意,就像驱动程序一样,如果您指定不同的
output 格式,则结果不会加载到镜像存储中
除非您还明确指定或使用 flag.docker
--output
--output type=docker
--load
下一步
了解每个驱动程序: