本地快取
目錄
local
快取儲存是一個簡單的快取選項,它將您的快取作為檔案儲存在檔案系統上的一個目錄中,使用 OCI 映象佈局 作為底層目錄結構。如果您只是進行測試,或者希望靈活地自行管理共享儲存解決方案,本地快取是一個不錯的選擇。
概要
$ docker buildx build --push -t <registry>/<image> \
--cache-to type=local,dest=path/to/local/dir[,parameters...] \
--cache-from type=local,src=path/to/local/dir .
下表描述了您可以傳遞給 --cache-to
和 --cache-from
的可用 CSV 引數。
名稱 | 選項 | 型別 | 預設值 | 描述 |
---|---|---|---|---|
src | cache-from | 字串 | 匯入快取的本地目錄路徑。 | |
摘要 | cache-from | 字串 | 要匯入的清單摘要,請參閱快取版本控制。 | |
dest | cache-to | 字串 | 匯出快取的本地目錄路徑。 | |
mode | cache-to | min ,max | min | 要匯出的快取層,請參閱 快取模式。 |
oci-mediatypes | cache-to | true ,false | true | 在匯出清單中使用 OCI 媒體型別,請參閱OCI 媒體型別。 |
image-manifest | cache-to | true ,false | true | 使用 OCI 媒體型別時,為快取映象生成一個映象清單而不是映象索引,請參閱OCI 媒體型別。 |
compression | cache-to | gzip 、estargz 、zstd | gzip | 壓縮型別,請參閱快取壓縮。 |
compression-level | cache-to | 0..22 | 壓縮級別,請參閱快取壓縮。 | |
force-compression | cache-to | true ,false | false | 強制應用壓縮,請參閱快取壓縮。 |
ignore-error | cache-to | 布林值 | false | 忽略因快取匯出失敗導致的錯誤。 |
如果 src
快取不存在,則快取匯入步驟將失敗,但構建會繼續。
快取版本控制
本節描述了本地檔案系統上的快取版本控制的工作原理,以及如何使用 digest
引數來使用舊版本的快取。
如果您手動檢查快取目錄,可以看到生成的 OCI 映象佈局
$ ls cache
blobs index.json ingest
$ cat cache/index.json | jq
{
"schemaVersion": 2,
"manifests": [
{
"mediaType": "application/vnd.oci.image.index.v1+json",
"digest": "sha256:6982c70595cb91769f61cd1e064cf5f41d5357387bab6b18c0164c5f98c1f707",
"size": 1560,
"annotations": {
"org.opencontainers.image.ref.name": "latest"
}
}
]
}
與其他快取型別一樣,本地快取在匯出時會透過替換 index.json
檔案的內容來更新。但是,以前的快取仍將保留在 blobs
目錄中。這些舊快取可以透過摘要定址,並無限期保留。因此,本地快取的大小將繼續增長(有關更多資訊,請參閱 moby/buildkit#1896
)。
使用 --cache-from
匯入快取時,您可以指定 digest
引數來強制載入舊版本的快取,例如
$ docker buildx build --push -t <registry>/<image> \
--cache-to type=local,dest=path/to/local/dir \
--cache-from type=local,ref=path/to/local/dir,digest=sha256:6982c70595cb91769f61cd1e064cf5f41d5357387bab6b18c0164c5f98c1f707 .
進一步閱讀
有關快取的介紹,請參閱 Docker 構建快取。
有關 local
快取後端的更多資訊,請參閱 BuildKit README。