快速入門:建置容器映射以使用 Azure Pipelines 部署應用程式
Azure DevOps Services
本快速入門說明如何使用 Azure Pipelines 建置應用程式部署的容器映像。 若要建置此映射,您只需要存放庫中的 Dockerfile。 您可以根據管線中使用的代理程式來建置 Linux 或 Windows 容器。
必要條件
派生範例存放庫
在瀏覽器中,移至下列範例存放庫,並將其分支至您的 GitHub 帳戶。
https://github.com/MicrosoftDocs/pipelines-javascript-docker
建置Linux或 Windows 映像
登入您的 Azure DevOps 組織,然後移至您的專案。
移至 [管線],並在專案中建立第一個管線時選取 [ 新增管線 ] 或 [建立管 線]。
選取 [GitHub ] 作為原始程式碼的位置。
選取您的存放庫,然後選取 [入門管線]。
- 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
- 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
使用下列程式代碼取代azure-pipelines.yml的內容。 根據您要部署 Linux 或 Windows 應用程式,請務必分別設定
vmImage
為ubuntu-latest
或windows-latest
。trigger: - main pool: vmImage: 'ubuntu-latest' variables: imageName: 'pipelines-javascript-docker' steps: - task: Docker@2 displayName: Build an image inputs: repository: $(imageName) command: build Dockerfile: app/Dockerfile
完成時,請選取 [ 儲存並執行]。
當您將 azure-pipelines.yml 檔案新增至存放庫時,系統會提示您新增認可訊息。 輸入訊息,然後選取 [ 儲存並執行]。
使用自我裝載代理程式時,請確定 Docker 已安裝在代理程式的主機上,且 Docker 引擎/精靈是以更高的許可權執行。
若要建置映像,Docker 必須安裝在代理程式的主機上,而且 Docker 引擎/精靈必須以更高的許可權執行。 使用下列步驟,使用 YAML 管線編輯器建立管線。
- 移至您的集合並建立專案。
- 在您的專案中,選取 [ 管線]。
- 選取建立管線。
- 選取 [GitHub Enterprise Server ] 作為原始程式碼的位置。
- 如果您尚未授權 Azure Pipelines 連線到您的 GitHub Enterprise Server 帳戶。
- 選取 [ 連線到 GitHub Enterprise Server]。
- 輸入您的帳戶詳細數據,然後選取 [ 驗證並儲存]。
- 選取您的存放庫。 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
- 若要設定管線,請選取 [ 建置 Docker 映像 範本]。
- 在 YAML 管線編輯器中,以下列程式代碼取代 YAML 檔案的內容。 將集區名稱取代為包含您自我裝載代理程式的集區名稱與 Docker 功能。
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- main
pool:
name: default
demands: docker
variables:
imageName: 'pipelines-javascript-docker'
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
- 選取儲存並執行。
- 在 [ 儲存並執行 ] 頁面上,選取 [ 儲存並再次執行 ]。
如需建置 Docker 映像的詳細資訊,請參閱 此範例應用程式所使用的 Docker 工作 。 您也可以使用命令行工作直接叫用 Docker 命令。
容器映像會建置並儲存在代理程式上。 您可以將映像推送至Google Container Registry、Docker Hub 或 Azure Container Registry。 如需詳細資訊,請參閱 將映射推送至 Docker Hub 或 Google Container Registry 或 將映像推送至 Azure Container Registry。
清除資源
如果您不打算繼續使用此應用程式,請刪除您的管線和程式代碼存放庫。
常見問題集
我可以使用哪些代理程式來建置容器映像?
您可以使用 Microsoft 裝載式 Ubuntu 代理程式或 Linux 平台型自我裝載式代理程式來建置 Linux 容器映像。
您可以使用 Microsoft 裝載式 Windows 代理程式或 Windows 平台型自我裝載式代理程式來建置 Windows 容器映像。 所有 Microsoft 裝載式 Windows 平台型代理程式都隨附於建置 Docker 所需的 Moby 引擎和用戶端。
您目前無法使用 Microsoft 裝載的 macOS 代理程式來建置容器映像,因為建置映射所需的 Moby 引擎並未預安裝於這些代理程式上。
如需詳細資訊,請參閱 Microsoft 裝載式代理程式可用的 Windows 和 Linux 代理程式選項。
裝載的代理程式可使用哪些預先快取的 Docker 映射?
為了避免花費很長的間隔從容器登錄提取每個作業的 Docker 映射,某些常用的映像會在 Microsoft 裝載的代理程式上預先傳回。
如何? 為 Docker 組建設定 BuildKit 變數嗎?
BuildKit 引進了效能、記憶體管理、功能和安全性的組建改善。 Windows 主機上目前不支援 BuildKit。
若要使用 BuildKit 啟用 Docker 組建,請設定 DOCKER_BUILDKIT 變數。
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'pipelines-javascript-docker'
DOCKER_BUILDKIT: 1
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: app/Dockerfile
如何使用自我裝載式代理程式?
必須安裝 Docker,且代理程式主機上執行的引擎/精靈。 如果 Docker 未安裝在代理程式的主機上,您可以將 Docker 安裝程式工作新增至管線。 您必須在 Docker 工作之前新增 Docker Installer 工作。
如何建立以腳本為基礎的 Docker 組建,而不是使用 Docker 工作?
您可以使用 build
命令或任何其他 Docker 命令。
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
此命令會建立相當於使用 Docker 工作所建置的映像。 在內部,Docker 工作會在腳本上呼叫 Docker 二進位檔,並再結合幾個命令,以提供更多優點。 深入瞭解 Docker 工作。
我可以在 Azure Pipelines 上的組建期間重複使用層次快取嗎?
如果您使用 Microsoft 裝載的代理程式,系統會根據從 azure-pipelines-image-generation 存放庫 範本產生的映射,將每個作業分派至新佈建的虛擬機。 這些虛擬機會在作業完成之後清除。 此暫時的存續期可防止重複使用這些虛擬機進行後續作業,以及重複使用快取的 Docker 層。 因應措施是,您可以設定多階段組建來產生兩個映像,並在早期階段將它們推送至映像登錄。 然後,您可以指示 Docker 使用這些映像作為具有 自變數的 --cache-from
快取來源。
如果您使用自我裝載的代理程式,您可以快取 Docker 層,而不需要任何因應措施,因為暫時的生命週期問題不適用於這些代理程式。
如何針對 x64 以外的架構建置 Linux 容器映像?
當您使用 Microsoft 裝載式 Linux 代理程式時,您會為 x64 架構建立 Linux 容器映像。 若要為其他架構建立映像 (例如 x86 或 ARM 處理器),您可以使用 QEMU 之類的機器模擬器。
下列步驟示範如何使用 QEMU 建立 ARM 處理器容器映射:
使用符合目標架構的基底映像撰寫 Dockerfile:
FROM arm64v8/alpine:latest
在建置映像之前,請在作業中執行下列腳本:
# register QEMU binary - this can be done by running the following image docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # build your image
如需詳細資訊,請參閱 GitHub 上的 qemu-user-static 。
如何? 執行測試和發佈容器化應用程式的測試結果嗎?
如需測試容器化應用程式及發佈產生的測試結果的不同選項,請參閱 發佈測試結果工作。
下一步
建置容器映射之後,請將映射推送至 Azure Container Registry、Docker Hub 或 Google Container Registry。 若要瞭解如何將映像推送至容器登錄,請繼續下列其中一篇文章: