建置垃圾回收
目錄
雖然 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
規則#0
:如果建置快取使用超過 512MB,則在 2 天未使用後刪除最容易重現的資料。規則#1
:移除任何 60 天未使用的資料。規則#2
:將未共享的建置快取保持在上限以下。規則#3
:如果先前的策略不足,則開始刪除內部資料以將建置快取保持在上限以下。
**注意**
Keep Bytes
預設為磁碟大小的 10%。如果無法判斷磁碟大小,則使用 2GB 作為後備。