快速入門:建置容器映射以使用 Azure Pipelines 部署應用程式

Azure DevOps Services

本快速入門說明如何使用 Azure Pipelines 建置應用程式部署的容器映像。 若要建置此映射,您只需要存放庫中的 Dockerfile。 您可以根據管線中使用的代理程式來建置 Linux 或 Windows 容器。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶
  • GitHub 帳戶。 如果您沒有 Microsoft 帳戶,請免費註冊
  • 已安裝 Docker 的 Azure 管線 Windows 或 Linux 代理程式。

派生範例存放庫

在瀏覽器中,移至下列範例存放庫,並將其分支至您的 GitHub 帳戶。

https://github.com/MicrosoftDocs/pipelines-javascript-docker

建置Linux或 Windows 映像

  1. 登入您的 Azure DevOps 組織,然後移至您的專案。

  2. 移至 [管線],並在專案中建立第一個管線時選取 [ 新增管線 ] 或 [建立管 線]。

  3. 選取 [GitHub ] 作為原始程式碼的位置。

  4. 選取您的存放庫,然後選取 [入門管線]。

    • 如果您重新導向至 GitHub 以登入,請輸入您的 GitHub 認證。
    • 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
  5. 使用下列程式代碼取代azure-pipelines.yml的內容。 根據您要部署 Linux 或 Windows 應用程式,請務必分別設定 vmImageubuntu-latestwindows-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
    
  6. 完成時,請選取 [ 儲存並執行]。

  7. 當您將 azure-pipelines.yml 檔案新增至存放庫時,系統會提示您新增認可訊息。 輸入訊息,然後選取 [ 儲存並執行]。

使用自我裝載代理程式時,請確定 Docker 已安裝在代理程式的主機上,且 Docker 引擎/精靈是以更高的許可權執行。

若要建置映像,Docker 必須安裝在代理程式的主機上,而且 Docker 引擎/精靈必須以更高的許可權執行。 使用下列步驟,使用 YAML 管線編輯器建立管線。

  1. 移至您的集合並建立專案。
  2. 在您的專案中,選取 [ 管線]。
  3. 選取建立管線
  4. 選取 [GitHub Enterprise Server ] 作為原始程式碼的位置。
  5. 如果您尚未授權 Azure Pipelines 連線到您的 GitHub Enterprise Server 帳戶。
    1. 選取 [連線 至 GitHub Enterprise Server]。
    2. 輸入您的帳戶詳細數據,然後選取 [ 驗證並儲存]。
  6. 選取您的存放庫。 如果您重新導向至 GitHub 以安裝 Azure Pipelines 應用程式,請選取 [ 核准並安裝]。
  7. 若要設定管線,請選取 [ 建置 Docker 映像 範本]。
  8. 在 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'

  1. 選取儲存並執行
  2. 在 [ 儲存並執行 ] 頁面上,選取 [ 儲存並再次執行 ]。

如需建置 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 裝載的代理程式上預先傳回。 如需可用預先快取映射的清單,請參閱 azure-pipelines-image-generation 存放庫中可用 VM 映射的 Included Software。

如何? 為 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 處理器容器映射:

  1. 使用符合目標架構的基底映像撰寫 Dockerfile:

    FROM arm64v8/alpine:latest
    
  2. 在建置映像之前,請在作業中執行下列腳本:

    # 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。 若要瞭解如何將映像推送至容器登錄,請繼續下列其中一篇文章: