快速入门:生成映像

Azure Pipelines

使用 Azure Pipelines 生成映像,开始使用容器映像。 构建映像所需的只是存储库中的 Dockerfile。

你可以根据你在管道中使用的代理构建 Linux 和 Windows 容器。 生成映像后,可以将其推送到 Azure 容器注册表、Docker 中心和 Google 容器注册表。 有关将映像推送到容器注册表的详细信息,请参阅 推送映像

必备条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 一个 GitHub 帐户。 如果没有该帐户,请注册免费版
  • 具有 Dockerfile 的 GitHub 存储库。 如果没有要使用的存储库,请将包含示例应用程序和 Dockerfile 的存储库分叉:
    https://github.com/MicrosoftDocs/pipelines-javascript-docker
    

构建 Linux 或 Windows 映像

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 依次选择 " 管道" 和 " 新建管道"。

  3. 选择 " GitHub " 作为源代码位置,并选择存储库。

    备注

    可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果出现这种情况,请选择“批准并安装”。

  4. 选择“初学者管道”。 将 azure-pipelines 的内容替换为此代码。 如果要构建 Linux 应用,请使用 ubuntu-1604 vmImage 。 你可以将用于 windows-latest vmImage 适用于的 Windows。

            trigger:
            - main
    
            pool:
              vmImage: 'ubuntu-1604' # set to windows-latest or another Windows vmImage for Windows builds
    
            variables:
              imageName: 'pipelines-javascript-docker'
    
            steps:
            - task: Docker@2
              displayName: Build an image
              inputs:
                repository: $(imageName)
                command: build
                Dockerfile: app/Dockerfile
    

    Windows 容器映像可以使用 Microsoft 托管的 Windows 代理或基于 Windows 平台的自承载代理 (,随小鲸鱼引擎和 Docker build) 的客户端所需的客户端提供。 可以使用 Microsoft 托管的 Ubuntu-16.04 代理或基于 Linux 平台的自承载代理来构建 linux 容器映像。 了解有关 Microsoft 托管代理提供的 Windows 和 Linux 代理选项的详细信息。

    备注

    目前,Microsoft 托管的 MacOS 代理无法用于构建容器映像,因为生成映像所需的小鲸鱼引擎未在这些代理上预安装。

  5. 选择“保存并运行”。 添加到存储库时,会显示添加提交消息的提示 azure-pipelines.yml 。 编辑消息,然后选择 " 保存并再次运行 " 以查看管道的运行情况。

    提示

    详细了解如何将映像推送到 Azure 容器注册表 ,或将 其推送到其他容器 注册表,例如 Google 容器注册表或 Docker Hub。 了解有关以上示例中使用的 Docker 任务 的详细信息。 还可以使用 命令行任务 (脚本直接调用 docker 命令,而不是使用建议的 docker 任务)

清理资源

如果不打算继续使用此应用程序,请删除管道和代码存储库。

常见问题解答

托管代理上提供了哪些预缓存的映像?

一些常用的映像在 Microsoft 托管的代理上预先缓存,以避免在每个作业的容器注册表中提取这些映像所花费的长时间间隔。 Azure 管道-映像生成存储库的发行说明中提供了预缓存映像的列表。

如何实现为 docker 生成设置 BuildKit 变量?

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

备注

Windows 主机上当前不支持 BuildKit。

如何使用自承载代理?

创建容器映像之前,需要在自承载计算机上安装 Docker。 在管道中将 docker 安装程序任务 添加到生成映像的 docker 任务 之前。

如何创建基于脚本的 Docker 生成,而不是使用 docker 任务?

你可以使用命令 build (或任何其他 Docker 命令) 。

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

此命令创建一个与 Docker 任务生成的等效映像。 Docker 任务本身在内部调用脚本上的 Docker 二进制文件,还拼结多个命令以提供更多好处。 有关详细信息,请 参阅 Docker 任务文档

Azure Pipelines 的生成过程中是否 reutilizing 层缓存?

在 Microsoft 托管代理的当前设计中,每个作业都将基于从 azure 管道 生成存储库模板) 生成的映像分派给新预配的虚拟机 (。 在作业完成后,将清理这些虚拟机,而不会保留这些虚拟机,因此不会在后续作业中重复使用。 虚拟机的暂时性质阻止重复使用缓存的 Docker 层。

但是,你可以通过自承载代理来缓存 Docker 层,因为暂时生存期问题不适用于这些代理。

如何构建 x64 以外的其他体系结构的 Linux 容器映像?

使用 Microsoft 托管的 Linux 代理时,需要为 x64 体系结构创建 Linux 容器映像。 若要为其他体系结构创建映像 (例如 x86 或 ARM) ,可以使用 qemu-img等计算机模拟器。 以下步骤演示了如何使用 QEMU-IMG 创建 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-img

如何对容器化应用程序运行测试并发布测试结果?

有关测试容器化应用程序和发布生成的测试结果的不同选项,请查看 发布测试结果任务

后续步骤

转到下一篇文章,了解如何将映像推送到容器注册表。