构建垃圾回收
目录
虽然 docker builder prune
或 docker buildx prune
命令一次运行,但垃圾回收会定期运行并遵循有序的修剪策略列表。
垃圾回收在 BuildKit 守护进程中运行。当缓存大小变得太大或缓存年龄过期时,守护进程会清除构建缓存。以下部分描述了如何通过定义垃圾回收策略来配置大小和年龄参数。
配置
根据构建器实例使用的驱动程序,垃圾回收将使用不同的配置文件。
如果使用的是 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
:将未共享的构建缓存保持在上限以下。rule#3
:如果之前的策略不足,则开始删除内部数据以将构建缓存保持在上限以下。
注意
保留字节
默认为磁盘大小的 10%。如果无法确定磁盘大小,则使用 2GB 作为后备。