azure - 如何在Azure管道中运行docker容器?

标签 azure docker azure-pipelines

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

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

pool:
  vmImage: 'ubuntu-16.04'

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

steps:
- script: printenv

但我无法让容器运行。

最佳答案

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

为了运行容器本身,我们必须使用 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 

关于azure - 如何在Azure管道中运行docker容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583510/

相关文章:

azure-devops - Azure 开发运营 : Getting variable value by concatenating other variables'value as task input

visual-studio - 仅当项目发生更改时才创建 Nuget 包

azure - 将 AzAccount 与 Azure Devops Pipeline 连接?

iis - 是否可以使用 Microsoft.Web.Administration 在基于云的 Appharbor 或 Azure 上操作 IIS 7?

azure - 如何获取 Azure Windows VM 计划信息?

azure - 等待 HTTP-01 质询传播 : failed to perform self check GET request

linux - 在 docker compose 中启动没有 "sleep infinity"命令的远程容器

amazon-ec2 - 如何从私有(private) Dockerhub 存储库自动化 docker 运行?

linux - docker-compose.yml 在以点 (.) 开头的文档上使用卷

azure - 如何在 Azure DevOps 中使部分成功的阶段变为失败?