Registry 快取

`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 參數。

名稱選項類型預設值說明
ref`cache-to`, `cache-from`字串要匯入的快取映像檔的完整名稱。
mode`cache-to``min`, `max`min要匯出的快取層,請參閱快取模式
oci-mediatypes`cache-to``true`, `false`true在匯出的資訊清單中使用 OCI 媒體類型,請參閱OCI 媒體類型
image-manifest`cache-to``true`, `false`false使用 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忽略快取匯出失敗引起的錯誤。

您可以為 `ref` 選擇任何有效值,只要它與您推送映像檔的目標位置不同即可。 您可以選擇不同的標籤(例如 `foo/bar:latest` 和 `foo/bar:build-cache`)、不同的映像檔名稱(例如 `foo/bar` 和 `foo/bar-cache`),甚至不同的儲存庫(例如 `docker.io/foo/bar` 和 `ghcr.io/foo/bar`)。 由您決定要使用的策略,將映像檔與快取映像檔分開。

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

進一步閱讀

有關快取的簡介,請參閱Docker 建置快取

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