我尝试使用Docker配置GoCD代理来构建我的项目。最初我的GoAgents作为SYSTEM运行,因为这是Windows上的默认安装,但我发现在构建期间创建了问题(由于$ env导致了奇怪的失败:TEMP没有定义或在一个奇怪的地方被定义)。 / p>
我将我的代理商转换为本地帐户并授予帐户权限以作为服务运行。这很有效,直到我尝试构建docker图像。我有一个脚本,作为我的用户完美地运行,但在作为GoCD代理运行时失败。
连接期间出现错误:发布http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.32/build?buildargs=%7B%22EngineDir%22%3A%22C%3A%5C%5CInfinity%22%2C%22ImageVersion%22%3A%222.0.0%22%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=29985a28e57e1f1b4fa8950cfa0f747b4c2680fa5f4fcb3643f68b4595825651&shmsize=0&t=invoke-infinity%3Alatest&t=invoke-infinity%3A2.0.0&target=&ulimits=null:打开//./pipe/docker_engine:访问被拒绝。在Windows上的默认守护程序配置中,必须提升docker客户端以进行连接。此错误还可能表示docker守护程序未运行。
我已尝试将用户添加到docker-users组,但这似乎没有帮助。我已经尝试过这篇文章http://dille.name/blog/2017/11/29/using-the-docker-named-pipe-as-a-non-admin-for-windowscontainers/但是得到并且错误地说Docker Windows不支持" hosts"。
有没有人有办法让Windows上的非管理员用户运行docker build?
由于
答案 0 :(得分:2)
现在已在Docker for Windows版本18.03.0-ce中修复此问题。基本上这个版本创建了一个名为docker-users的本地组,他们都可以访问管道。只需添加所需的用户作为该组的成员,快乐的日子!
答案 1 :(得分:0)
所以这个问题的最佳答案(我得到的)是我为相关帐户添加了一个DOCKER_HOST环境变量来使用tcp连接。
DOCKER_HOST=tcp://127.0.0.1:2375
我必须编辑' C:\ ProgramData \ Docker \ config \ daemon.json'文件并添加"主机"。
{
...
"hosts": [
"npipe://",
...
"tcp://127.0.0.1:2375"
]
}
设置完成后,帐户可以通过CLI调用docker引擎。
警告:这可能是不安全的,Docker警告说这可以让你打开远程代码执行。不确定如何确切的细节,但对我来说风险很小,我愿意穿它。
附加:我能够通过创建一个改变命名管道的SecurityDescriptor的C#程序来使用命名管道\。\ pipe \ docker_engine。但是,我放弃了这个作为一个可行的解决方案,因为它需要在每次启动/停止引擎时运行,并且根据我的喜好很脆弱