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/