官方教程中提供了一种做法,也就是提供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%
|