繁体   English   中英

在 Azure 管道中运行 Docker 容器,该管道也在容器中运行的自托管代理上运行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM