登錄檔快取

registry 快取儲存可以被認為是 inline 快取的擴充套件。與 inline 快取不同,registry 快取完全獨立於映象,這允許更靈活的使用——registry 支援的快取可以做 inline 快取所能做的一切,甚至更多。

  • 允許分離快取和生成的映象檔案,以便您可以在不包含快取的情況下分發最終映象。
  • 它可以在 max 模式下高效快取多階段構建,而不僅僅是最終階段。
  • 它可以與其他匯出器一起使用,實現更大的靈活性,而不僅僅是 image 匯出器。

預設的 docker 驅動不支援此快取儲存後端。要使用此功能,請使用不同的驅動建立一個新的構建器。有關更多資訊,請參閱構建驅動

概要

與更簡單的 inline 快取不同,registry 快取支援多個配置引數。

$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=registry,ref=<registry>/<cache-image>[,parameters...] \
  --cache-from type=registry,ref=<registry>/<cache-image> .

下表描述了您可以傳遞給 --cache-to--cache-from 的可用 CSV 引數。

名稱選項型別預設值描述
refcache-to,cache-from字串要匯入的快取映象的全名。
modecache-tomin,maxmin要匯出的快取層,請參閱 快取模式
oci-mediatypescache-totrue,falsetrue在匯出的清單中使用 OCI 媒體型別,請參閱OCI 媒體型別
image-manifestcache-totrue,falsetrue使用 OCI 媒體型別時,為快取映象生成映象清單而不是映象索引,請參閱OCI 媒體型別
compressioncache-togzipestargzzstdgzip壓縮型別,請參閱快取壓縮
compression-levelcache-to0..22壓縮級別,請參閱快取壓縮
force-compressioncache-totrue,falsefalse強制應用壓縮,請參閱快取壓縮
ignore-errorcache-to布林值false忽略因快取匯出失敗導致的錯誤。

您可以為 ref 選擇任何有效值,只要它與您推送映象的目標位置不同即可。您可以選擇不同的標籤(例如 foo/bar:latestfoo/bar:build-cache),獨立的映象名稱(例如 foo/barfoo/bar-cache),甚至不同的倉庫(例如 docker.io/foo/barghcr.io/foo/bar)。由您決定用於將映象與快取映象分開的策略。

如果 --cache-from 目標不存在,則快取匯入步驟將失敗,但構建會繼續。

進一步閱讀

有關快取的介紹,請參閱 Docker 構建快取

有關 registry 快取後端的更多資訊,請參閱 BuildKit README