我正在尝试在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
导致故障:
连接期间出错:(…(:打开///pipe/docker_engine:系统找不到指定的文件。在上的默认守护程序配置中在Windows中,docker客户端必须在提升状态下运行才能连接。此错误也可能指示docker守护进程没有运行。New CosmosDbEmulatorContainer:无法创建容器来自的azure cosmosdb模拟器mcr.microsoft.com/cosmosdb/windows/azure宇宙模拟器:最新";
我对azure pipelines和docker还比较陌生,所以非常感谢您的帮助!
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@0task只安装Docker cli,不安装Docker客户端。
请参阅本文档的以下摘录。
要为此CI选择的代理池应该安装Docker for Windows,除非安装是作为CI的一部分在以前的任务中手动完成的。有关代理池的选择,请参阅Microsoft托管代理文章;我们建议从Hosted VS2017开始。
如上述推荐文档所示。请使用托管的vs2017代理来运行您的管道。在yaml文件中设置pool
部分,如下所示:请参阅pool docuemnt。
pool:
vmImage: vs2017-win2016
如果您正在使用自托管代理。请在您的自托管代理计算机中安装docker客户端。并确保docker客户端已启动并正在运行。