azure - 如何在 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
但我无法让容器运行。
解决方案
显然,问题中提到的配置将提取图像并printenv
在容器内运行步骤(在本例中为脚本中的命令)。将自动挂载一个临时工作目录,并将在该目录中运行。但是,这不会运行容器本身。(CMD
Dockerfile中定义的命令不会被执行)
为了运行容器本身,我们必须使用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
推荐阅读
- angular - 基于 Angular 项目的 Ionic 未找到组件工厂
- flask - Flask Fetch API 和 request.is_xhr
- express - 创建具有源代码保护和使用 node.js 路由的 NWJS 桌面应用程序
- python - Python/Numpy 每第 n 行切片一个数组
- mysql - "SELECT *" 除了不允许用户查看的列
- javascript - 如何使用 Dropzone.js 进行分块文件上传(仅限 PHP)?
- oracle - Oracle 数据库 - 授予/撤销高并发
- networking - BrowserSync:不工作外部链接
- firefox - 如何在 Firefox 的数据 URI 中生成哈希 (#)?
- javascript - fetch 和 XMLHttpRequest 的问题