[英]Azure DevOps YAML build fail when running container jobs on self hosted agent
[英]Running Docker container in Azure pipeline running on self hosted agent that is running in the container as well
我试图在我的 Azure 管道中拉 Docker 容器。 Azure 管道在自托管代理上运行,即在 docker 容器中运行。 我收到以下错误:
当管道本身在容器自托管代理上运行时,是否可以在管道中运行容器?
管道 YAML:
# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
resources:
containers:
- container: qmate
image: qmate.int.repositories.cloud.sap/qmate-executor:latest
pool:
vmImage: ubuntu-latest
name: SYS-DEV-Self-hosted
demands:
- agent.name -equals SYSDEV-agent
steps:
- task: NodeTool@0
inputs:
versionSpec: '15.x'
displayName: 'Install Node.js'
- task: DockerInstaller@0
inputs:
dockerVersion: '17.09.0-ce'
- script: docker pull qmate
workingDirectory: ./
displayName: 'Docker Pull'
- script: |
cd tests/QmateE2E/regression
npm install
npx wdio config.js
displayName: 'npm install and build'
您可以在 docker 容器中配置自托管代理。 您不需要在管道中运行 docker 容器。 您可以在 docker 实例中安装自托管代理。 然后将 docker 容器设为自托管,可在代理池中设置。
您可以指定多个容器与容器作业一起运行...(如果您想运行另一个容器与之交互)(您在管道上指定的容器将由 Azure Devops 自动拉取并启动)(我通常会指定要在顶级容器中运行的container:
或者对于特定作业下的一个,如果存在多个作业。)
(目前完成的方式,如果添加更多容器,安全的选择是有一个target: qmate
应该在容器中运行的每个步骤)
对于您在此处遇到的错误:对于与 docker 交互的步骤,例如docker build
,您还可以在特定任务上设置target: host
。 (Azure DevOps 似乎挂载了一些东西以允许共享大部分上下文)(在这种情况下,您尝试拉取的图像可能在管道启动时已经拉取)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.