Azure Container Registry 的最佳做法

藉由遵循這些最佳作法,您可以在 Azure 中將私人登錄的效能和成本效益最大化,以儲存及部署容器映射和其他成品。

如需登錄概念的背景資訊,請參閱 關於登錄、存放庫和映射。 關於登錄之中標籤和版本映像的策略,另請參閱標籤和版本設定容器映像的建議

網路鄰近部署

在您部署容器的相同 Azure 區域中建立容器登錄。 將登錄放在於網路上鄰近您容器主機的區域有助於降低延遲和成本。

網路鄰近部署是使用私人容器登錄的主要原因之一。 Docker 映像擁有一個有效的分層建構,可允許您進行增量部署。 不過,新節點必須提取指定之映象所需的所有層級。 這個初始的 docker pull 可快速加總達數 GB。 讓私人登錄鄰近您的部署可將網路延遲降到最低。 此外,所有公用雲端 (包括 Azure) 都實作網路輸出費用。 將映像從一個資料中心提取到另一個資料中心除了增添延遲之外,也會增添網路輸出費用。

異地複寫多區域部署

如果您要將容器部署到多個區域,請使用 Azure Container Registry 的異地複寫功能。 不論您是要從區域資料中心為全球客戶提供服務,還是您的開發小組位於不同位置,您都可以藉由異地複寫登錄來簡化登錄管理並將延遲降到最低。 您也可以設定區域 webhook 來通知您特定複本中的事件,例如推送映射的時間。

Premium登錄可使用異地複寫。 若要了解如何使用異地複寫,請參閱由三部分組成的教學課程 Azure Container Registry 中的異地複寫

最大化提取效能

除了將映射放在接近您的部署之外,映射本身的特性也可能會影響提取效能。

  • 影像大小 -移除不必要的 圖層 或減少圖層的大小,以最小化影像的大小。 減少映射大小的其中一種方式是使用 多階段的 Docker 組建 方法,只包含必要的執行時間元件。

    也請檢查您的映射是否可以包含較輕的基本 OS 映射。 而且,如果您使用的部署環境(例如快取特定基底映射的 Azure 容器實例),請檢查您是否可以交換其中一個快取影像的影像層。

  • 圖層數目 -平衡使用的圖層數目。 如果您太少,就不會受益于主機上的圖層重複使用和快取。 太多,而且您的部署環境花了更多時間來提取和解壓縮。 最理想的五至10層。

也請選擇符合您效能需求的 Azure Container Registry 服務層 。 當您有大量部署時,進階層可提供最大的頻寬和並行讀取和寫入作業的最高速率。

儲存機制命名空間

藉由使用存放庫命名空間,您可以允許在組織內的多個群組之間共用單一登入。 登錄可以在各個部署與小組之間共用。 Azure Container Registry 支援巢狀命名空間,可讓您進行群組隔離。 但是,登錄會獨立管理所有存放庫,而不是階層。

例如,請思考一下下列容器映像標記。 全公司使用的映象 (例如 aspnetcore) 會放在根命名空間中,而「生產」及「行銷」群組所擁有的容器映像則會各自使用自己的命名空間。

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42

專用資源群組

由於容器登錄是跨多個容器主機使用的資源,因此登錄應該位於自己的資源群組中。

雖然您可能會試驗特定的主機類型,例如 Azure 容器實例,但您可能會想要在完成時刪除容器實例。 不過,您也可能會想要保留已推送到 Azure Container Registry 的映像集合。 藉由將登錄放在它自己的資源群組中,即可將刪除容器執行個體資源群組時意外刪除該登錄中映像集合的風險降到最低。

驗證與授權

向 Azure Container Registry 進行驗證時,有兩種主要的案例:個人驗證和服務 (或「遠端控制」) 驗證。 下表提供這些案例的簡要概觀,以及各個案例的建議驗證方法。

類型 範例案例 建議的方法
個人身分識別 將映像提取至其開發電腦或從該電腦提取映像的開發人員。 az acr login
遠端控制/服務身分識別 未直接涉及使用者的組建和部署管線。 服務主體

如需這些和其他 Azure Container Registry 驗證案例的深入資訊,請參閱 使用 Azure Container Registry 進行驗證

Azure Container Registry 支援您組織中的安全性作法,以將職責和許可權散發給不同的身分識別。 使用 角色型存取控制,將適當的許可權指派給不同的使用者、服務主體,或執行不同登錄作業的其他身分識別。 例如,將推播許可權指派給組建管線中使用的服務主體,並將提取許可權指派給用於部署的不同身分識別。 為特定存放庫建立更精細、限時存取的 權杖

管理登錄大小

每個 容器登錄服務層級的儲存體限制是為了與一般案例一致:基本 的入門、適用于大部分生產環境應用程式的 標準,以及適用于超大規模效能和 異地複寫的 Premium 。 在整個登錄生命週期,您應該定期刪除未使用的內容來管理其大小。

使用 Azure CLI 命令 az acr show-usage 來顯示登錄的目前大小:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table
NAME      LIMIT         CURRENT VALUE    UNIT
--------  ------------  ---------------  ------
Size      536870912000  185444288        Bytes
Webhooks  100                            Count

您也可以在 Azure 入口網站中,於登錄的 [概觀] 中找到目前使用的儲存體:

Azure 入口網站中的登錄使用量資訊

刪除映像資料

Azure Container Registry 支援數種方法供您從容器登錄中刪除映像資料。 您可以依標籤或資訊清單摘要來刪除映像,也可以刪除整個存放庫。

如需如何從登錄中刪除映像資料的詳細資訊,包括未標記 (有時稱為「懸空」或「孤立」) 的映像,請參閱刪除 Azure Container Registry 中的容器映像

後續步驟

Azure Container Registry 可以在數個層級中使用 (也稱為可提供不同功能的 Sku) 。 如需可用服務層級的詳細資訊,請參閱 Azure Container Registry 服務層

如需改善容器登錄安全性狀態的建議,請參閱 Azure Container Registry 的 Azure 安全性基準