使用 ACR 工作來自動建置和維護容器映像

容器提供新的虛擬化層級,並且隔離應用程式和開發人員相依性與基礎結構和作業需求。 然而,此應用程式虛擬化仍須在整個容器生命週期進行管理和修補。

什麼是 ACR 工作?

「ACR 工作」是 Azure Container Registry 內的一套功能。 該服務可提供適用於 Linux、Windows 及 ARM 等平台的雲端式容器映像建置,且可讓 Docker 容器的 OS 和架構修補自動化。 「ACR 工作」不僅可透過依需求進行的容器映像建置,將您的「內部迴圈」開發週期延伸至雲端,也可透過更新原始程式碼、容器基礎映像或計時器,而觸發自動化建置。 例如,您可使用基礎映像更新觸發程序來自動化 OS 和應用程式架構修補工作流程,維護環境安全,同時遵守不可變容器的準則。

[! 重要] ACR 會暫時停止 Azure 免費點數中的 ACR 工作執行。 這可能會影響現有的工作執行。 如果您遇到問題,請建立支援案例,讓我們的小組可提供其他指引。 請注意,現有的客戶不會受到此暫停的影響。 當暫停解除時,我們會在這裡更新文件通知。

[! 警告] 請注意,命令行上提供的任何資訊,或作為URI的一部分,都可以記錄為 Azure Container Registry (ACR) 診斷追蹤的一部分。 這包括敏感數據,例如認證、GitHub 個人存取令牌和其他安全資訊。 請謹慎防止任何潛在的安全性風險,請務必避免在命令行或 URI 中包含受限於診斷記錄的敏感性詳細數據。

工作案例

ACR 工作支援多種用於建置和維護容器映像及其他組件成品的案例。 如需詳細資訊,請參閱本文中的下列各節。

每個 ACR 工作都有相關聯的原始程式碼內容 - 用於建置容器映像或其他組建成品的一系列來源檔案位置。 範例內容包括 Git 存放庫或本機檔案系統。

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

快速工作

內部迴圈開發週期 (在認可至原始檔控制前的撰寫程式碼、建置及測試應用程式的反覆程序) 是容器生命週期管理的開端。

「ACR 工作」的快速工作功能可在您認可第一行程式碼之前,藉由將您的容器映像建置卸交給 Azure,提供一個整合式開發體驗。 透過快速工作,您可以在認可程式碼之前,驗證自動化組建定義並攔截潛在問題。

Azure CLI 中的 az acr build 命令會使用熟悉的 docker build 格式來取得內容 (要建置的一組檔案)、傳送給 ACR 工作,並依預設在完成時將建置的映像推送至登錄。

如需簡介,請參閱在 Azure Container Registry 中建置和執行容器映像的快速入門。

「ACR 工作」已設計為容器生命週期原始物件。 例如,您可以將「ACR 工作」整合到 CI/CD 解決方案中。 透過服務主體執行 az login,您的 CI/CD 解決方案可接著發出 az acr build 命令來開始進行映像建置。

若要了解如何使用快速工作,請參閱第一個「ACR 工作」教學課程:使用 Azure Container Registry 工作在雲端中建置容器映像

提示

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

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

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

當您將 Git 存放庫設為工作內容時,ACR 工作支援下列觸發程序:

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

注意

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

若要了解如何在認可原始程式碼時觸發建置,請參閱第二個「ACR 工作」教學課程:使用 Azure Container Registry 工作自動執行容器映像建置

個人存取權杖

若要設定原始程式碼更新觸發程序,則須為該工作提供個人存取權杖 (PAT),才能在公用或私人 GitHub 或 Azure DevOps 存放庫中設定 Webhook。 PAT 的必要範圍如下:

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

若要建立 PAT,請參閱 GitHubAzure DevOps 文件。

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

「ACR 工作」可偵測基礎映像更新,因此能實際增強您的容器建置工作流程。 大部分容器映像的特徵;基礎映像是一或多個應用程式映像所依據的父映像。 基礎映像通常包含作業系統,有時也包含應用程式架構。

您可以設定 ACR 工作,在建置應用程式映像時追蹤基底映像的相依性。 當更新的基底映像推送至登錄時,或是 Docker Hub 等公用存放庫中的基底映像有所更新時,ACR 工作可以自動根據基底映像建置任何應用程式映像。 透過這個自動偵測和重建功能,「ACR 工作」便可讓您針對參考已更新之基底映像的每個應用程式映像,省下手動追蹤及更新通常所需的時間與精力。

了解 ACR 工作的基礎映像更新觸發程序。 並透過教學課程在 Azure Container Registry 中更新基礎映像時自動執行容器映像建置,了解如何在基礎映像推送至容器登錄時觸發映像建置

排定工作

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

多步驟工作

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

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

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

多步驟工作可讓您將映像的建置、執行及測試,分割成更多可組合且具有步驟間相依性支援的步驟。 藉由「ACR 工作」中的多步驟工作,您可以更細微地控制映像建置、測試及 OS 和架構修補工作流程。

如需了解多步驟工作,請參閱執行 ACR 工作中的多步驟建置、測試及修補工作

內容位置

下表顯示 ACR 工作的支援內容位置範例:

內容位置 描述 範例
本機檔案系統 本機檔案系統上目錄內的檔案。 /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 遠端 Web 伺服器上壓縮封存中的檔案。 http://remoteserver/myapp.tar.gz
容器登錄中的組建成品 容器登錄存放庫中的 OCI 成品檔案。 oci://myregistry.azurecr.io/myartifact:mytag

注意

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

映像平台

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

OS 架構
Linux amd64
arm
arm64
386
Windows amd64

檢視工作輸出

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

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

下一步

若您已準備在雲端建置和維護容器映像,請參閱 ACR 工作教學課程系列

您可以選擇性地安裝適用於 Visual Studio Code 的 Docker 擴充功能Azure 帳戶擴充功能,來搭配 Azure 容器登錄使用。 向 Azure 容器登錄提取及推送映像,或是執行 ACR 工作,都可以在 Visual Studio Code 內完成。