gpt4 book ai didi

docker - 在 Azure 管道中使用 Docker 镜像作为构建代理时出现错误

转载 作者:行者123 更新时间:2023-12-05 01:09:41 25 4
gpt4 key购买 nike

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

管道运行时出现此错误:

##[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 正在服务器上运行并且全部运行成功:

Start-Service Docker
docker network ls
docker version

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

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'

错误发生在初始化容器管道步骤。 Microsoft 文档中关于 Docker 镜像作为构建代理的文档至少可以说是缺乏的。这根本没有帮助。我发现这篇文章有最好的例子: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 并重新启动后自动创建。我重启了服务器,组还是不存在。

最佳答案

我想出了如何解决这个问题。这个GitHub post真的帮助了我。我使用了帖子中提到的 dockeraccesshelper。我授予与我的管道构建代理关联的帐户,因此在这种情况下,“NT AUTHORITY\NETWORK SERVICE”可以访问 Docker。一旦我这样做了,我的管道就能够初始化 Docker 容器。

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

关于docker - 在 Azure 管道中使用 Docker 镜像作为构建代理时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64914552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com