首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure管道中使用Docker映像作为生成代理时出现错误

在Azure管道中使用Docker映像作为生成代理时出现错误
EN

Stack Overflow用户
提问于 2020-11-19 23:14:35
回答 1查看 710关注 0票数 0

我正在尝试使用Docker镜像作为Azure管道中的构建代理。我使用的是Azure Docker Server2019和DevOps企业版。

当管道运行时,我得到这个错误:

代码语言:javascript
复制
##[section]Starting: Initialize containers
##[command]C:\Program Files\Docker\docker.EXE version --format '{{.Server.APIVersion}}'
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/version: open //./pipe/docker_engine: Access is denied. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
'
##[error]Exit code 1 returned from process: file name 'C:\Program Files\Docker\docker.EXE', arguments 'version --format '{{.Server.APIVersion}}''.
##[section]Finishing: Initialize containers

我已经确认Docker已经安装在服务器上了。我运行了以下命令,以确保Docker在服务器上运行,并且所有命令都运行成功:

代码语言:javascript
复制
Start-Service Docker
docker network ls
docker version

下面是我正在使用的管道YAML文件:

代码语言:javascript
复制
trigger:
  none
resources:
  containers:
  - container: angulardocker
    image: mdailey77/angularbuild:1.0
    endpoint: Docker Hub

stages:
  - stage: Client
    jobs:
      - job: BuildTest
        pool:
          name: Default Windows
        container: angulardocker
        steps:
          - task: Npm@1
            displayName: 'Client Build'
            inputs:
              command: custom
              customCommand: run build -- --prod
              workingDir: client
          - task: CopyFiles@2
            displayName: 'Copy Client Build to Staging Directory'
            inputs:
              contents: '**'
              SourceFolder: $(Build.SourcesDirectory)/client/dist
              targetFolder: $(Build.ArtifactStagingDirectory)/client
          - task: PublishBuildArtifacts@1
            displayName: 'Publish Build Artifact - Client'
            inputs:
              pathToPublish: '$(Build.ArtifactStagingDirectory)/client'
              artifactName: 'Client'

该错误发生在初始化容器管道步骤中。至少可以说,关于Docker镜像作为构建代理的Microsoft文档是缺乏的。这一点帮助都没有。我找到的这篇文章有最好的例子:https://im5tu.io/article/2018/12/building-a-custom-build-agent-image-with-docker-and-azure-devops-pipelines/。我找不到错误,就卡在那一刻了。

更新:在做了更多的研究和@vaibhavnd建议后,我相当确定这个问题是我的管道构建代理无法访问Docker守护进程。一如既往,Microsoft文档提到了这一点,但实际上并没有说明如何做到这一点。如何配置我的生成代理以使它们具有访问权限?具体的步骤是什么?

更新2:我考虑将用户添加到docker-user组,但服务器上没有这样的组。根据one GitHub post的说法,docker用户组应该是在安装Docker并重新启动后自动创建的。我重新启动了服务器,但组仍然不存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-23 02:42:27

我想出了解决这个问题的办法。这个GitHub post真的帮了我大忙。我使用了帖子中提到的dockeraccesshelper。我授予了与我的管道构建代理相关的帐户,因此在本例中为'NT AUTHORITY\NETWORK SERVICE‘,即访问Docker。一旦我这样做了,我的管道就能够初始化Docker容器了。

使用docker-user group路线对我不起作用。安装Docker Enterprise时,docker-user组不是自动创建的。我认为在Windows Server 2019上使用Docker Enterprise时,这可能是正常的。我尝试自己创建组,并将'NT AUTHORITY/NETWORK SERVICE‘帐户添加到组中,但无法添加。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64914552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档