0

我正在尝试使用 Azure DevOps 中的 Azure Cosmos DB Emulator 构建任务设置 CI/CD 管道。我已经从市场上安装了它,YAML 文件包含:

> task: CosmosDbEmulator@2 inputs:
>     containerName: 'azure-cosmosdb-emulator'
>     enableAPI: 'SQL'
>     portMapping: '8081:8081, 8901:8901, 8902:8902, 8979:8979, 10250:10250, 10251:10251, 10252:10252, 10253:10253, 10254:10254,
> 10255:10255, 10256:10256, 10350:10350'
>     hostDirectory: '$(Build.BinariesDirectory)\azure-cosmosdb-emulator'

运行此命令会导致失败“术语 'docker' 未被识别为 cmdlet、函数、脚本文件或可操作的名称”,因此我将其添加到 YAML 中:

  task: DockerInstaller@0
  displayName: Docker Installer
  inputs:
    dockerVersion: 17.09.0-ce
    releaseType: stable

导致失败:

连接期间出错:(...): open //./pipe/docker_engine: 系统找不到指定的文件。在 Windows 上的默认守护程序配置中,必须运行提升的 docker 客户端才能连接。此错误还可能表明 docker 守护程序未运行。New-CosmosDbEmulatorContainer:无法从 mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator:latest 创建容器 azure-cosmosdb-emulator

我对 azure pipelines 和 docker 比较陌生,所以非常感谢任何帮助!

4

1 回答 1

0

error during connect: (...): open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect.

您遇到的上述错误是因为您的构建代理中未安装 docker,或者 docker 客户端未成功启动。DockerInstaller@0 任务只安装 Docker cli,它不安装 docker 客户端。

请参阅本文档的以下摘录。

为这个 CI 选择的代理池应该安装了 Docker for Windows,除非安装是作为 CI 的一部分在之前的任务中手动完成的。有关代理池的选择,请参阅 Microsoft 托管代理文章;我们建议从 Hosted VS2017 开始。

如上文件推荐。请使用托管的 vs2017 代理来运行您的管道。pool在您的 yaml 文件中设置部分,如下所示:请参阅文档。

pool: 
  vmImage: vs2017-win2016

如果您使用的是自托管代理。请在您的自托管代理机器上安装docker 客户端。并确保 docker 客户端已启动并正在运行。

于 2021-01-01T06:43:39.710 回答