我正在使用Microsoft Dynamics 365 Business Central。(企业资源规划软件)。
我试图在我的本地服务器上创建构建代理,以设置与我的项目的持续集成。
在构建服务器上,我在Windows 2019上运行Docker Enterprise。
当我启动我的 dockeragent 以促进构建时,我遇到了问题。
我的 CI 流要求 dockeragent 启动另一个名为 navcontainerhelper 的 docker 容器,它基本上是一个 docker 容器,其中包含要在其上构建我的应用程序的业务中心环境。
但是,navcontainerhelper 不知道 docker 命令,因为它不包括 docker。
我研究并发现使用 -v 安装码头工人套接字是执行此操作的方法,但我似乎无法让它工作。
当我创建代理时,我正在使用以下命令:
docker run -v /var/run/docker.sock:/var/run/docker.sock -ti dockeragent:latest -e AZP_URL=<My azure url> -e AZP_TOKEN=<my azure token) -e AZP_AGENT_NAME=<my builder agent name>
当我尝试执行此操作时,我得到以下命令,该命令使我得出上述结论。
docker : C:Program Filesdockerdocker.exe: Error response from daemon: invalid volume specification: '/var/run/docker.sock:/var/run/docker.sock'.
At C:dockeragentStartAgents.ps1:1 char:1
+ docker run -v /var/run/docker.sock:/var/run/docker.sock -ti dockerage ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (C:Program File...n/docker.sock'.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
See 'C:Program Filesdockerdocker.exe run --help'.
有人可以给我一个关于我做错了什么的指示吗?
我已将脚本更改为将命名管道用于窗口。 它现在像这样安装:
docker run -e AZP_URL=<My azure url> -e AZP_TOKEN=<my azure token) -e AZP_AGENT_NAME=<my builder agent name> -v \.pipedocker_engine:\.pipedocker_engine dockeragent:latest
但是容器仍然拒绝识别我的 docker 命令:
New-NavContainer : The term 'docker' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:azpagent_work***sscriptsCreate-Container.ps***:36 char:***
+ New-NavContainer @parameters `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (docker:String) [New-NavContainer], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException,New-NavContainer
PowerShell exited with code '***'.
任何指示将不胜感激!
在这种情况下,答案是使用命名管道,如下所示:
-v .pipedocker_engine:\.pipedocker_engine
并将 docker 客户端安装到容器中,以便它可以与 docker 引擎通信
我在安装时遇到了问题,所以我使用了一个来自docker hub的docker提供的Windows映像作为我的基础映像,而不是Microsoft映像。遵循微软指令的其余部分。 使用以下命令启动容器,一切顺利。
`docker run --env-file agent.env -v \.pipedocker_engine:\.pipedocker_engine --name dockeragent dockeragent:latest`