使用 Azure Container Registry 工作自動執行容器映像建置和維護
容器提供新的虛擬化層級,隔離應用程式和開發人員相依性與基礎結構和作業需求。 此應用程式虛擬化仍須在整個容器生命週期進行管理和修補。
Azure Container Registry 工作是一套功能:
- 為 Linux、Windows 和 ARM 等平台提供雲端式容器映像建置。
- 使用隨選容器映像組建,將應用程式開發週期的早期部分延伸至雲端。
- 啟用由原始程式碼更新、容器基底映像更新或計時器所觸發的自動化組建。
例如,使用基礎映像更新的觸發程序,您可以針對 Docker 容器自動化作業系統和架構修補。 這些觸發程序可協助您維護安全的環境,同時遵守不可變容器的原則。
重要
Azure Container Registry 工作執行會暫時從 Azure 免費點數暫停。 此暫停可能會影響現有的工作執行。 如果您遇到問題,請建立支援案例,讓我們的小組可提供其他指引。
警告
請注意,命令列上所提供或作為 URI 一部分的任何資訊,都可以記錄為 Azure Container Registry (ACR) 診斷追蹤的一部分。 這包括敏感性資料,例如認證、GitHub 個人存取權杖和其他安全資訊。 請謹慎防止任何潛在的安全性風險,務必避免在命令列或 URI 中包含受限於診斷記錄的敏感性詳細資料。
工作案例
Azure Container Registry 工作支援數個案例,以建置與維護容器映像和其他成品。 本文說明快速工作、自動觸發的工作,以及多步驟工作。
每個工作都有相關聯的原始程式碼內容,這是用於建置容器映像或其他成品的來源檔案位置。 範例內容包括 Git 存放庫和本機檔案系統。
工作也可利用執行變數,以便您重複使用工作定義,並標準化映像和組建成品的標記。
快速工作
「內部迴圈」開發週期是在認可原始檔控制之前撰寫程式代碼、建置和測試應用程式的反覆程式。 這確實是容器生命週期管理的開始。
Azure Container Registry 工作中的快速工作功能可藉由將您的容器映像建置卸載至 Azure,提供整合式開發體驗。 您可以在 Azure 中隨需建置單一容器映像並推送至容器登錄,而無須安裝本機 Docker 引擎。 思考雲端中的 docker build
、docker 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 Buildpack 從應用程式原始程式碼建置和推送映像。
自動觸發的工作
啟用一或多個觸發程序來建置映像。
觸發原始程式碼更新的工作
您可以在認可程式碼或者對 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 |
程式碼 (讀取) |
私人存放庫 | 存放庫 (完整控制) | 程式碼 (讀取) |
若要建立個人存取權杖,請參閱 GitHub 或 Azure DevOps 文件。
自動進行作業系統和架構修補
Azure Container Registry 工作可偵測基礎映像更新,因此能實際增強您的容器建置工作流程。 基礎映像是大部分容器映像的功能。 這是一或多個應用程式映像所依據的父映像。 基礎映像通常包含作業系統,有時也包含應用程式架構。
您可以設定 Azure Container Registry 工作,在其建置應用程式映像時追蹤基礎映像的相依性。 當更新的基礎映像推送至您的登錄時,或基礎映像在公用存放庫 (例如 Docker Hub) 中更新時,Azure Container Registry 工作可據以自動建置任何應用程式映像。 透過這個自動偵測和重建功能,Azure Container Registry 工作便可讓您針對參考已更新基礎映像的每個應用程式映像,省下手動追蹤及更新通常所需的時間與精力。
如需詳細資訊,請參閱關於 Azure Container Registry 工作的基礎映像更新和教學課程:在 Azure Container Registry 中更新基礎映像時自動執行容器映像建置。
排定工作
當您建立或更新工作時,可藉由設定一或多個計時器觸發程序來排程工作。 排程工作適用於在已定義的排程上執行容器工作負載,或是在定期推送至登錄的映像上執行維護作業或測試。 如需詳細資訊,請參閱在已定義排程執行 Azure Container Registry 工作。
多步驟工作
使用以多個容器為基礎的多步驟工作流程,擴充 Azure Container Registry 工作的單一映像建置和推送功能。
多步驟工作提供步驟式工作定義和執行,以建置、測試及修補雲端中的容器映像。 YAML 檔案中定義的工作步驟會針對容器映像或其他組建成品,指定個別的建置和推送作業。 這些工作也可以定義一或多個容器的執行,每個步驟都會使用容器作為其執行環境。
例如,您可以建立一個自動執行下列步驟的多步驟工作:
- 建置 Web 應用程式映像。
- 執行 Web 應用程式容器。
- 建置 Web 應用程式測試映像。
- 執行 Web 應用程式測試容器,這會針對執行中應用程式容器執行測試。
- 如果測試通過,便會建置 Helm 圖表封存套件。
- 使用新的 Helm 圖表封存套件來執行
helm upgrade
工作。
多步驟工作可讓您將映像的建置、執行及測試,分割成更多可組合步驟,在步驟之間具有相依性支援。 透過 Azure Container Registry 工作中的多步驟工作,您可以更細微地控制映像建置、測試及作業系統和架構修補的工作流程。
深入了解如何在 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 | 遠端 Web 伺服器上壓縮封存中的檔案。 | http://remoteserver/myapp.tar.gz |
容器登錄中的組建成品 | 容器登錄存放庫中的 OCI 成品檔案。 | oci://myregistry.azurecr.io/myartifact:mytag |
注意
當您使用 Git 存放庫作為原始程式碼更新所觸發的工作內容時,您必須提供個人存取權杖。
映像平台
根據預設,Azure Container Registry 工作會建置 Linux 作業系統和 AMD64 架構的映像。 指定 --platform
標記,以建置適用於其他架構的 Windows 映像或 Linux 映像。 以作業系統/結構格式 (例如 --platform Linux/arm
) 指定作業系統,並且選擇性地指定支援結構。 針對 ARM 結構,選擇性地以作業系統/結構/變數格式 (例如 --platform Linux/arm64/v8
) 指定變數。
OS | 架構 |
---|---|
Linux | AMD64 ARM ARM64 386 |
Windows | AMD64 |
工作輸出
執行的每項工作皆會產生記錄輸出,供您檢查以判斷工作步驟是否成功執行。 當您手動觸發工作時,工作執行的記錄輸出便會串流至主控台並儲存,以供稍後擷取。 當工作自動觸發時 (例如透過原始程式碼認可或基礎映像更新),工作記錄僅會儲存。 檢視 Azure 入口網站中的執行記錄,或使用 az acr task logs 命令。
相關內容
當您準備好在雲端中自動化容器映像建置和維護時,請參閱教學課程:使用 Azure Container Registry 工作在雲端中建置和部署容器映像。
選擇性地了解 Docker 延伸模組,以及適用於 Visual Studio Code 的 Azure 帳戶延伸模組。 您可以使用這些延伸模組,從容器登錄提取映像、將映像推送至容器登錄,或執行 Azure Container Registry 工作,全部都在 Visual Studio Code 中。