首页 > 解决方案 > 如何在 Azure 管道中运行 docker 容器?

问题描述

Azure 文档 ( https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/docker?view=azure-devops ) 未指定如何在 Azure 管道中运行 docker 容器。我们可以使用 Docker@2 任务来构建/推送 docker 镜像,但它没有运行容器的命令。通过查看旧版本 Docker 任务的源代码,我可以看到有一个运行命令,但现在已弃用,并且找不到任何文档。

我还关注了文档:https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/container-phases?view= azure-devops 使用以下 yaml 我能够拉出一个 docker 映像,该映像是之前推送到 ACR。(my-acr是我通过项目设置添加的服务连接)

pool:
  vmImage: 'ubuntu-16.04'

container:
  image: somerepo/rnd-hello:latest
  endpoint: my-acr

steps:
- script: printenv

但我无法让容器运行。

标签: azuredockerazure-pipelines

解决方案


显然,问题中提到的配置将提取图像并printenv在容器内运行步骤(在本例中为脚本中的命令)。将自动挂载一个临时工作目录,并将在该目录中运行。但是,这不会运行容器本身。(CMDDockerfile中定义的命令不会被执行)

为了运行容器本身,我们必须使用Docker@2内置任务登录到 docker 注册表,然后手动将其docker run作为脚本执行。这是一个例子,

trigger: none

jobs:
- job: RunTest
  workspace:
    clean: all
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: Docker@2
    displayName: Login to ACR
    inputs:
      command: login
      containerRegistry: my-acr
  - script: |
      docker run my-registry.azurecr.io/somerepo/rnd-hello:latest 

推荐阅读