mda*_*y77 3 docker azure-devops azure-pipelines
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
我已经验证服务器上安装了 Docker。我运行了以下命令来确保 Docker 正在服务器上运行并且全部运行成功:
Start-Service Docker
docker network ls
docker version
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的管道 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'
Run Code Online (Sandbox Code Playgroud)
该错误发生在初始化容器管道步骤。至少可以说,关于 Docker 镜像作为构建代理的 Microsoft 文档是缺乏的。这根本没有帮助。我发现这篇文章有最好的例子:https://im5tu.io/article/2018/12/building-a-custom-build-agent-image-with-docker-and-azure-devops-pipelines/。我目前无法找出错误并陷入困境。
更新:经过更多研究和 @vaibhavnd 建议,我相当确定问题是我的管道构建代理无法访问 Docker 守护进程。一如既往,微软文档提到了这一点,但实际上并没有展示如何做到这一点。如何配置我的构建代理以便他们能够访问?步骤是什么?
更新 2:我考虑将用户添加到 docker-user 组,但服务器上没有这样的组。根据一篇 GitHub 帖子,docker 用户组应该在安装 Docker 并重新启动后自动创建。我重新启动服务器,该组仍然不存在。
我想出了如何解决这个问题。这篇GitHub 帖子确实对我很有帮助。我使用了帖子中提到的 dockeraccesshelper 。我授予了与我的管道构建代理关联的帐户(因此在本例中为“NT AUTHORITY\NETWORK SERVICE”)访问 Docker 的权限。完成此操作后,我的管道就能够初始化 Docker 容器。
走 docker-user 组路线对我来说不起作用。当我安装 Docker Enterprise 时,并未自动创建 docker-user 组。我认为在 Windows Server 2019 上使用 Docker Enterprise 时这可能是正常的。我尝试自己创建组并将“NT AUTHORITY/NETWORK SERVICE”帐户添加到该组,但无法添加它。
| 归档时间: |
|
| 查看次数: |
2459 次 |
| 最近记录: |