构建垃圾回收
目录
虽然 docker builder prune
或 docker buildx prune
命令同时运行,但垃圾回收会定期运行并遵循
Prune 策略的有序列表。
垃圾回收在 BuildKit 守护进程中运行。守护程序清除构建 cache (当缓存大小变得太大或缓存期限到期时)。这 以下部分介绍如何配置 Size (大小) 和 Age (年龄) 参数。
策略的每个参数都对应于一个命令行
论点。有关详细信息,请参阅文档。docker buildx prune
docker buildx prune
配置
根据生成器实例使用的驱动程序, 垃圾回收将使用不同的配置文件。
如果您使用的是 docker
驱动程序,则垃圾回收
可以在 Docker 守护程序配置中配置。
文件:
{
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "10GB",
"policy": [
{ "keepStorage": "10GB", "filter": ["unused-for=2200h"] },
{ "keepStorage": "50GB", "filter": ["unused-for=3300h"] },
{ "keepStorage": "100GB", "all": true }
]
}
}
}
对于其他驱动程序,可以使用 BuildKit 配置文件配置垃圾回收:
[worker.oci]
gc = true
gckeepstorage = 10000
[[worker.oci.gcpolicy]]
keepBytes = 512000000
keepDuration = 172800
filters = [ "type==source.local", "type==exec.cachemount", "type==source.git.checkout"]
[[worker.oci.gcpolicy]]
all = true
keepBytes = 1024000000
默认策略
如果未设置,则默认垃圾回收策略适用于所有构建器:
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 512MB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 26GB
GC Policy rule#2:
All: false
Keep Bytes: 26GB
GC Policy rule#3:
All: true
Keep Bytes: 26GB
rule#0
:如果构建缓存使用超过 512MB 的内存,则最容易删除 2 天未使用后的数据可重现。rule#1
:删除 60 天未使用的任何数据。rule#2
:将 unshared 构建缓存保持在 CAP 下。rule#3
:如果以前的策略不足,则开始删除内部数据 将 Build Cache 保持在 CAP.
注意
Keep Bytes
默认为磁盘大小的 10%。如果磁盘大小不能 要确定,它使用 2GB 作为回退。