分享方式:


使用 Azure Container Registry 工作將容器映射建置和維護自動化

容器藉由隔離應用程式和開發人員相依性與基礎結構和作業需求,來提供新的虛擬化層級。 需要解決此應用程式虛擬化在容器生命週期中的管理和修補方式的需求。

Azure Container Registry 工作是一套功能,可:

  • 為 Linux、Windows 和 ARM 等平臺提供雲端式容器映像建置
  • 使用隨選容器映像組建,將應用程式開發週期的早期部分延伸至雲端。
  • 啟用由原始程式碼更新、容器基底映像或定時器更新所觸發的自動化組建。

例如,使用基底映射更新的觸發程式,您可以將 Docker 容器的 OS 和架構修補自動化。 這些觸發程式可協助您維護安全的環境,同時遵守不可變容器的原則。

重要

Azure Container Registry 工作執行會暫時從 Azure 免費點數暫停。 此暫停可能會影響現有的工作執行。 如果您遇到問題,請建立支援案例,讓我們的小組可提供其他指引。

警告

您在命令行上或作為 URI 一部分提供的任何資訊,都可能會記錄為 Azure Container Registry 診斷追蹤的一部分。 此資訊包含敏感數據,例如認證和 GitHub 個人存取令牌。 請謹慎防止任何潛在的安全性風險。 請勿在受診斷記錄約束的命令行或 URI 中包含敏感性詳細數據。

工作案例

Azure Container Registry 工作支持數個案例,以建置和維護容器映像和其他成品。 本文說明 快速工作自動觸發的工作,以及 多步驟工作

每個工作都有相關聯的 原始碼內容,這是用來建置容器映像或其他成品的來源檔案位置。 範例內容包括 Git 存放庫和本機文件系統。

工作也可利用執行變數,以便您重複使用工作定義,並標準化映像和組建成品的標記。

快速工作

內部 迴圈 開發週期是在認可原始檔控制之前撰寫程式代碼、建置和測試應用程式的反覆程式。 這確實是容器生命週期管理的開始。

Azure Container Registry 工作中的快速工作功能可將容器映射組建卸除至 Azure,以提供整合式開發體驗。 您可以在 Azure 中視需要將單一容器映像建置並推送至容器登錄,而不需要本機 Docker 引擎安裝。 思考雲端中的 docker builddocker push。 透過快速工作,您可以在認可程序代碼之前,先確認自動化建置定義並攔截潛在問題。

藉由使用熟悉 docker build 的格式, Azure CLI 中的 az acr build 命令會採用 內容。 接著,命令會將內容傳送至 Azure Container Registry,並在完成時將建置映射推送至其登錄。

Azure Container Registry 工作設計為容器生命週期基本類型。 例如,您可以將 Azure Container Registry 工作整合到持續整合和持續傳遞 (CI/CD) 解決方案中。 如果您使用服務主體執行 az login,CI/CD 解決方案接著可以發出 az acr build 命令來啟動映像組建。

若要瞭解如何使用快速工作,請參閱 使用 Azure Container Registry 工作建置和部署容器映像的快速入門教學 課程。

提示

若要直接從原始程式碼建置和推送映像,而不使用 Dockerfile,Azure Container Registry 提供 az acr pack build 命令 (預覽)。 此工具會使用 Cloud Native Buildpacks,從應用程式原始碼建置並推送映射。

自動觸發的工作

啟用一或多個 觸發程式 來建置映像。

在原始程式碼更新上觸發工作

您可以在認可程式代碼或提取要求或更新 GitHub 或 Azure DevOps 中的公用或私人 Git 存放庫時觸發容器映像建置或多重步驟工作。 例如使用 Azure CLI 命令 az acr task create 設定建置工作:指定 Git 存放庫,並選擇性指定分支和 Dockerfile。 當小組更新存放庫中的程序代碼時,在 Azure Container Registry 工作中建立的 Webhook 會觸發存放庫中定義的容器映射組建。

當您將 Git 存放庫設定為工作內容時,Azure Container Registry 工作支援下列觸發程式:

觸發程序 預設為啟用
提交 Yes
提取要求 No

注意

目前,Azure Container Registry 工作不支援 GitHub Enterprise 存放庫中的認可或提取要求觸發程式。

若要瞭解如何在原始程式碼認可上觸發組建,請參閱 使用 Azure Container Registry 工作將容器映射組建自動化。

個人存取權杖

若要設定原始程式碼更新的觸發程式,您必須提供個人存取令牌,以在公用或私人 GitHub 或 Azure DevOps 存放庫中設定 Webhook。 個人存取令牌的必要範圍如下:

存放庫類型 GitHub Azure DevOps
公用儲存機制 repo:status
public_repo
程式碼 (讀取)
私人存放庫 存放庫 (完整控制) 程式碼 (讀取)

若要建立個人存取令牌,請參閱 GitHubAzure DevOps 檔。

自動進行作業系統和架構修補

增強容器建置工作流程之 Azure Container Registry 工作的強大功能,來自於其偵測基底映射更新的能力。 基底映像是大部分容器映像的功能。 這是一或多個應用程式映像所依據的父映像。 基底映像通常包含作業系統,有時包含應用程序架構。

您可以設定 Azure Container Registry 工作,以在建置應用程式映像時追蹤基底映射的相依性。 當更新的基底映射推送至您的登錄時,或在公用存放庫中更新基底映射,例如在 Docker Hub 中,Azure Container Registry 工作可以根據它自動建置任何應用程式映像。 透過此自動偵測和重建,Azure Container Registry 工作可節省您手動追蹤和更新每個參考已更新基底映像的應用程式映像所需的時間和精力。

如需詳細資訊,請參閱 關於 Azure Container Registry 工作的基底映射更新和 教學課程:在 Azure 容器登錄中更新基底映射時自動化容器映射組建。

排定工作

您可以在建立或更新工作時設定一或多個 定時器觸發 程式來排程工作。 排程工作適用於在已定義的排程上執行容器工作負載,或是在定期推送至登錄的映像上執行維護作業或測試。 如需詳細資訊,請參閱 根據定義的排程執行 Azure Container Registry 工作。

多步驟工作

使用以多個容器為基礎的多步驟工作流程,擴充 Azure Container Registry 工作的單一映像建置和推送功能。

多步驟工作提供步驟式工作定義和執行,以建置、測試及修補雲端中的容器映像。 YAML 檔案中定義的工作步驟會針對容器映像或其他組建成品,指定個別的建置和推送作業。 這些工作也可以定義一或多個容器的執行,每個步驟都會使用容器作為其執行環境。

例如,您可以建立多步驟工作,以自動化下列步驟:

  1. 建置 Web 應用程式映像。
  2. 執行 Web 應用程式容器。
  3. 建置 Web 應用程式測試映像。
  4. 執行 Web 應用程式測試容器,以針對執行中的應用程式容器執行測試。
  5. 如果測試通過,請建置 Helm 圖表封存套件。
  6. 使用新的 Helm 圖表封存套件來執行工作 helm upgrade

多步驟工作可讓您將映像的建置、執行和測試分割成更可組合的步驟,並在步驟之間支援相依性。 使用 Azure Container Registry 工作中的多步驟工作,您可以更細微地控制映射建置、測試和 OS 和架構修補的工作流程。

深入瞭解如何在 Azure Container Registry 工作中執行多步驟建置、測試和修補工作

內容位置

下表顯示 Azure Container Registry 工作支持的內容位置範例:

內容位置 描述 範例
本機檔案系統 本機檔案系統目錄內的檔案。 /home/user/projects/myapp
GitHub 主分支 GitHub 存放庫的主分支 (或其他預設分支) 內的檔案。 https://github.com/gituser/myapp-repo.git
GitHub 分支 公用或私人 GitHub 存放庫的特定分支。 https://github.com/gituser/myapp-repo.git#mybranch
GitHub 子資料夾 GitHub 存放庫中的子資料夾檔案。 此範例顯示分支和子資料夾規格的組合。 https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub 認可 公用或私人 GitHub 存放庫中的特定認可。 此範例顯示認可哈希 (SHA) 和子資料夾規格的組合。 https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps 子資料夾 公用或私人 Azure 存放庫中的子資料夾檔案。 此範例顯示分支和子資料夾規格的組合。 https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
遠端 Tarball 遠端網頁伺服器上壓縮封存中的檔案。 http://remoteserver/myapp.tar.gz
容器登錄中的組建成品 容器登錄存放庫中的 OCI 成品檔案。 oci://myregistry.azurecr.io/myartifact:mytag

注意

當您使用 Git 存放庫做為原始程式碼更新所觸發之工作的內容時,您必須提供 個人存取權杖

映像平台

根據預設,Azure Container Registry 會針對 Linux OS 和 AMD64 架構執行建置映像。 指定 --platform 標記,以建置適用於其他架構的 Windows 映像或 Linux 映像。 以 OS/架構格式指定 OS,並選擇性地指定支援的架構(例如 )。 --platform Linux/arm 針對 ARM 架構,選擇性地指定 OS/architecture/variant 格式的 變體 (例如 , --platform Linux/arm64/v8)。

OS 架構
Linux AMD64
ARM
ARM64
386
Windows AMD64

工作輸出

執行的每項工作皆會產生記錄輸出,供您檢查以判斷工作步驟是否成功執行。 當您手動觸發工作時,工作執行的記錄輸出會串流至主控台,並儲存以供稍後擷取。 自動觸發工作時(例如,原始程式碼認可或基底映射更新),工作記錄只會儲存。 檢視 Azure 入口網站中的執行記錄,或使用 az acr task logs 命令。

深入了解檢視和管理工作記錄