BuildKit快速起步¶
Buildkit是一个以高效、富有表现力和可重复的方式将源代码转换为构建架构的工具包:
自动垃圾收集
可扩展的前端格式
并发的依赖解析
高效的指令缓存
构建缓存导入/导出
嵌套构建作业调用
分布式worker
多种输出格式
可插拔架构
无root权限执行
安装¶
从 buildkit releases 下载最新执行包,解压缩后移动到
/usr/bin
目录下:
tar xfz buildkit-v0.10.4.linux-amd64.tar.gz
cd bin
sudo mv * /usr/bin/
运行(需要先安装和运行 OCI(runc) 和 containerd):
sudo buildkitd
配置
/etc/buildkit/buildkitd.toml
:
[worker.oci]
enabled = false
[worker.containerd]
enabled = true
# namespace should be "k8s.io" for Kubernetes (including Rancher Desktop)
namespace = "default"
然后就可以使用 nerdctl 工具执行 nerdctl build
指令来构建镜像。但是我发现手工启动的 buildkitd
并没有使用 containerd
的网络,所以还是需要配置一个 buildkit
的 systemd 服务,或者(仔细看了readme)在运行参数中添加 containd
参数:
By default, the OCI (runc) worker is used. You can set --oci-worker=false --containerd-worker=true to use the containerd worker.
重新运行(指定使用conterd worker):
sudo buildkitd --oci-worker=false --containerd-worker=true
不过,没有解决 nerdctl 中 nerdctl build
网络不通问题