成品快取 - 概觀

成品快取功能可讓使用者快取私人容器登錄中的容器映像。 成品快取可在基本標準進階服務層級中使用。

本文是六部分教學課程系列的第一部分。 本教學課程涵蓋下列項目:

  1. 成品快取
  2. 啟用成品快取 - Azure 入口網站
  3. 啟用具有驗證的成品快取 - Azure 入口網站
  4. 啟用成品快取 - Azure CLI
  5. 啟用具有驗證的成品快取 - Azure CLI
  6. 成品快取的疑難排解指南

成品快取

成品快取可讓您從公用和私人存放庫快取容器映像。

實作成品快取提供下列優點:

更可靠的提取作業:透過快取 ACR 中的容器映像,達成更快速的容器映像提取。 由於 Microsoft 管理 Azure 網路,透過向客戶提供異地複寫和可用性區域的支援,使提取作業更加快速。

私人網路:快取的登錄可用於私人網路。 因此,用戶可以設定其防火牆以符合合規性標準。

確保傳遞上游內容:所有登錄,尤其是 Docker Hub 等公用登錄,都有匿名提取限制,這是為了確保這些登錄可以為每個人提供服務。 成品快取可讓使用者從本機 ACR 提取映像,而不是從上游登錄提取。 成品快取可確保傳遞上游內容,且使用者享有從快取提取容器映像而不計入提取限制的優點。

詞彙

  • 快取規則 - 快取規則是您可以建立以將成品從支援的存放庫提取至快取的規則。

    • 快取規則包含四個部分:

      1. 規則名稱 - 快取規則的名稱。 例如: Hello-World-Cache

      2. 來源 - 來源登錄的名稱。

      3. 存放庫路徑 - 尋找和擷取您想要快取的成品所在存放庫來源路徑。 例如: docker.io/library/hello-world

      4. 新的 ACR 存放庫命名空間 - 儲存成品的新存放庫路徑名稱。 例如: hello-world 。 ACR 執行個體內部不能有已存在的存放庫。

  • 認證

    • 認證是一組使用者名稱和密碼,用於來源登錄。 您需要認證才能向公用或私人存放庫進行驗證。 認證包含四個部分

      1. 認證 - 認證的名稱。

      2. 來源登錄登入伺服器 - 來源登錄的登入伺服器。

      3. 來源驗證 - 用來儲存認證的金鑰保存庫位置。

      4. 使用者名稱和密碼祕密 - 包含使用者名稱和密碼的秘密。

限制

  • 只有對可用的容器映像完成至少一次的映像提取之後,才會發生快取。 對於每個可用的新映像,必須完成新的映像提取。 當有新的標籤可用時,成品快取不會自動提取映像的新標籤。 此功能已列入藍圖,但此發行版本不支援。

  • 成品快取僅支援 1000 個快取規則。

上游支援

成品快取目前支援下列上游登錄:

上游登錄 支援 可用性
Docker Hub (英文) 同時支援已驗證的提取和未經驗證的提取。 Azure CLI、Azure 入口網站
Microsoft 成品登錄 僅支援未經驗證的提取。 Azure CLI、Azure 入口網站
ECR 公用 僅支援未經驗證的提取。 Azure CLI、Azure 入口網站
GitHub Container Registry 同時支援已驗證的提取和未經驗證的提取。 Azure CLI、Azure 入口網站
Nvidia 同時支援已驗證的提取和未經驗證的提取。 Azure CLI
Quay 同時支援已驗證的提取和未經驗證的提取。 Azure CLI、Azure 入口網站
registry.k8s.io 同時支援已驗證的提取和未經驗證的提取。 Azure CLI
Google Container Registry 同時支援已驗證的提取和未經驗證的提取。 Azure CLI

萬用字元

萬用字元會使用星號 (*) 來比對容器映像登錄內的多個路徑。 成品快取目前支援下列萬用字元:

注意

來自目標存放庫 => 來源存放庫的快取規則對應。

登錄層級萬用字元

登錄層級萬用字元可讓您從上游登錄快取所有存放庫。

快取規則 對應 範例
contoso.azurecr.io/* => mcr.microsoft.com/* 將 ACR 下的所有映像對應至 MCR。 contoso.azurecr.io/myapp/image1 => mcr.microsoft.com/myapp/image1
contoso.azurecr.io/myapp/image2 => mcr.microsoft.com/myapp/image2

存放庫層級萬用字元

存放庫層級萬用字元可讓您快取上游登錄中對應到存放庫前置詞的所有存放庫。

快取規則 對應 範例
contoso.azurecr.io/dotnet/* => mcr.microsoft.com/dotnet/* 將 ACR 下的特定存放庫對應至 MCR 中的相對應存放庫。 contoso.azurecr.io/dotnet/sdk => mcr.microsoft.com/dotnet/sdk
contoso.azurecr.io/dotnet/runtime => mcr.microsoft.com/dotnet/runtime
contoso.azurecr.io/library/dotnet/* => mcr.microsoft.com/dotnet/*
contoso.azurecr.io/library/python/* => docker.io/library/python/*
將 ACR 下的特定存放庫對應至不同上游登錄中的存放庫。 contoso.azurecr.io/library/dotnet/app1 => mcr.microsoft.com/dotnet/app1
contoso.azurecr.io/library/python/app3 => docker.io/library/python/app3

萬用字元型快取規則的限制

萬用字元快取規則會使用星號 (*) 來比對容器映像登錄內的多個路徑。 這些規則不能與其他萬用字元快取規則重疊。 換句話說,如果您對某個登錄路徑有萬用字元快取規則,則無法新增與它重疊的另一個萬用字元規則。

以下是重疊規則的一些範例:

範例 1:

現有的快取規則:contoso.azurecr.io/* => mcr.microsoft.com/*
正在新增的新快取:contoso.azurecr.io/library/* => docker.io/library/*

新增快取規則會被阻止,因為目標存放庫路徑 contoso.azurecr.io/library/* 與現有的萬用字元規則 contoso.azurecr.io/* 重疊。

範例 2:

現有的快取規則:contoso.azurecr.io/library/* =>mcr.microsoft.com/library/*
正在新增的新快取:contoso.azurecr.io/library/dotnet/* =>docker.io/library/dotnet/*

新增快取規則會被阻止,因為目標存放庫路徑 contoso.azurecr.io/library/dotnet/* 與現有的萬用字元規則 contoso.azurecr.io/library/* 重疊。

靜態/固定快取規則的限制

靜態或固定快取規則更具體,且不使用萬用字元。 它們可以與萬用字元型快取規則重疊。 如果快取規則指定固定存放庫路徑,則允許它與萬用字元型快取規則重疊。

範例 1:

現有的快取規則:contoso.azurecr.io/* =>mcr.microsoft.com/*
正在新增的新快取:contoso.azurecr.io/library/dotnet =>docker.io/library/dotnet

允許新增快取規則,因為 contoso.azurecr.io/library/dotnet 是靜態路徑,而且可以與萬用字元快取規則 contoso.azurecr.io/* 重疊。

下一步

  • 若要使用 Azure 入口網站啟用成品快取,請繼續閱讀下一篇文章:啟用成品快取