共用方式為


使用 Azure Container Registry 管理公用內容。

本文提供使用本機登錄的作法和工作流程概觀,例如 Azure 容器登錄 來維護公用內容的複本,包括 Docker Hub 中的容器映像。

公開內容的風險

您的環境可能相依於公用內容,例如公用容器映像、 Helm 圖表開放原則代理程式 (OPA) 原則或其他成品。 例如,您可以透過直接從 Docker Hub 或其他公用登錄提取映像,以執行 nginx 進行服務路由傳送或 docker build FROM alpine

如果沒有適當的控制,對公用登錄內容具有相依性時,可能會對映像開發和部署工作流程造成風險。 若要降低此風險,請在可能時保留公用內容的本機副本。 如需詳細資訊,請參閱 Open Container Initiative 部落格

使用 Docker Hub 進行驗證

如果您目前從 Docker Hub 提取公用映像作為建置或部署工作流程的一部分,建議您 使用 Docker Hub 帳戶進行驗證 ,而不是提出匿名提取要求。

當您進行頻繁的匿名提取要求時,您可能會看到類似 ERROR: toomanyrequests: Too Many Requests.You have reached your pull rate limit. 向 Docker Hub 驗證的 Docker 錯誤,以防止這些錯誤。

注意

自 2020 年 11 月 2 日起, 下載速率限制 適用於從 Docker 免費方案帳戶對 Docker Hub 的匿名和已驗證要求。 這些限制分別由IP位址和 Docker 識別碼強制執行。

若要估計提取要求數目,請記住,在使用雲端提供者服務或公司 NAT 後方運作時,多個使用者會以 IP 位址子集的形式出現在 Docker Hub 中。 藉由將 Docker 付費帳戶驗證新增至對 Docker Hub 提出的要求,您可以避免因速率限制節流所造成的潛在服務中斷。

如需詳細資料,請參閱 Docker 定價和訂用帳戶以及 Docker 服務條款

Docker Hub 存取權杖

Docker Hub 在驗證至 Docker Hub 時,支援個人存取權杖作為 Docker 密碼的替代方案。 建議針對從 Docker Hub 提取映像的自動化服務使用權杖。 您可以為不同的使用者或服務產生多個權杖,並在不再需要時撤銷權杖。

若要使用權杖向 docker login 進行驗證,請省略命令列上的密碼。 出現輸入密碼提示時,請改為輸入權杖。 如果您為 Docker Hub 帳戶啟用雙因素驗證,則必須在從 Docker CLI 登入時使用個人存取權杖。

從 Azure 服務進行驗證

數個 Azure 服務,包括 App Service 和 Azure 容器實例,支援從公用登錄提取映像,例如 Docker Hub 以進行容器部署。 如果您需要從 Docker Hub 部署映像,我們建議您進行設定以使用 Docker Hub 帳戶進行驗證。 範例:

應用程式服務

  • 映像來源:Docker Hub
  • 存放庫存取:私人
  • 登入:<Docker Hub 使用者名稱>
  • 密碼:<Docker Hub 權杖>

如需詳細資料,請參閱 App Service 上的 Docker Hub 已驗證提取

Azure 容器執行個體

  • 映像來源:Docker Hub 或其他登錄
  • 映像類型:私人
  • 映像登錄登入伺服器:docker.io
  • 映像登錄使用者名稱:<Docker Hub 使用者名稱>
  • 映像登錄密碼:<Docker Hub 權杖>
  • 映像:docker.io/<repo name>:<tag>

設定成品快取以取用公用內容

使用公用內容的最佳做法是結合登錄驗證和成品快取功能。 使用成品快取,將容器成品快取到您的 Azure Container Registry,即使在專用網中也是如此。 使用成品快取不僅能保護您的登錄速率限制,而且在結合異地複寫的 ACR 時大幅提高提取可靠性,以從最接近 Azure 資源的區域提取成品。 此外,您可以使用 ACR 供應專案的所有安全性功能,包括專用網、防火牆設定、服務主體等等。 如需搭配 ACR 成品快取使用公用內容的完整資訊,請參閱 成品快取 教學課程。

將映像匯入至 Azure Container Registry

若要管理公用映像的複本,如果您還沒有公用映像,請建立 Azure 容器登錄。 使用 Azure CLI、Azure 入口網站、Azure PowerShell 或其他工具來建立登錄。

建議的一次性步驟是將基礎映像和其他公用內容匯入至您的 Azure Container Registry。 Azure CLI 中的 az acr import 命令支援從公用登錄匯入映射,例如 Docker Hub 和 Microsoft Container Registry,以及從私人容器登錄匯入映射。

az acr import 不需要本機 Docker 安裝。 您可以使用 Azure CLI 的本機安裝或直接在 Azure Cloud Shell 中執行。 其支援任何 OS 類型、多架構映像或 Helm 圖表等 OCI 成品的映像。

視組織的需求而定,您可以匯入至專用登錄或共用登錄中的存放庫。

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

更新映像參考

應用程式映像的開發人員應該確保其程式碼會在其控制項下參考本機內容。

  • 更新映像參考以使用私人登錄。 例如,更新 Dockerfile 中的 FROM baseimage:v1 語句為 FROM myregistry.azurecr.io/mybaseimage:v1,以便用於非 DNL 登錄,或更新為 FROM myregistry-abc123.azurecr.io/mybaseimage:v1,以便用於啟用 DNL 的登錄。 如需登錄建立期間 DNL 選項和 DNS 名稱含意的詳細資訊,請參閱 快速入門 - 在入口網站中建立登錄
  • 設定認證或驗證機制以使用私人登錄。 確切的機制取決於您用來存取登錄的工具,以及您管理使用者存取的方式。
    • 如果您使用 Kubernetes 叢集或 Azure Kubernetes Service 來存取登錄,請參閱驗證案例
    • 深入了解向 Azure Container Registry 進行驗證的選項

自動化應用程式映像更新

若要在更新基底映射時將應用程式映射組建自動化,請設定 Azure Container Registry 工作。 此方法會擴充映像匯入。 自動化建置工作可以追蹤基礎映像更新原始程式碼更新

如需詳細範例,請參閱如何使用 Azure Container Registry 工作來取用和維護公用內容

注意

單一預先設定的工作可以自動重建參考相依基礎映像的每個應用程式映像。

下一步