Featured image of post docker buildx 跨平台构建镜像时限制CPU使用率

docker buildx 跨平台构建镜像时限制CPU使用率

官方教程中提供了一种做法,也就是提供buildkitd的配置文件后再创建builder:

1
2
3
# 宿主上新建`$HOME/.docker/buildx/buildkitd.default.toml`,比如限制同时最多4个进程
[worker.oci]
  max-parallelism = 4

然后创建builder:

1
2
3
$ docker buildx create --use \
  --name mybuilder \
  --driver docker-container

但这种方式对于同时构建多个平台的镜像起不到限制的作用,所以这里再提供一种不依靠docker本身,而是使用cgroup2的功能来实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## 创建builder
docker run --privileged --rm tonistiigi/binfmt --install all &>/dev/null
docker buildx create --name builder --use 2>/dev/null || docker buildx use builder
docker buildx inspect --bootstrap

## 限制 docker buildx CPU使用率
## CPU每线程上限为100%,CPU多个线程的上限就是线程数乘以100%,比如16线程的上限就是1600%
## 如果有16个核心,那么设置800%就是16个核心的一半使用率,整体上就是50%(800%/1600%=8/16=50%)
## 而如果有32个核心,那么设置800%相对于全部核心,整体上就是限制在25%(800%/3200%=8/32=25%)
## 需要自行先安装好 jq
systemctl set-property docker-$(docker inspect buildx_buildkit_builder0 | jq -r .[0].Id).scope CPUQuota=800%
Built with Hugo
主题 StackJimmy 设计