Docker Windows授予构建代理用户的访问权限

时间:2017-12-12 09:10:14

标签: docker go-cd

我尝试使用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?

由于

2 个答案:

答案 0 :(得分:2)

现在已在Docker for Windows版本18.03.0-ce中修复此问题。基本上这个版本创建了一个名为docker-users的本地组,他们都可以访问管道。只需添加所需的用户作为该组的成员,快乐的日子!

enter image description here

https://docs.docker.com/docker-for-windows/release-notes/#docker-community-edition-18030-ce-win59-2018-03-26

答案 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。但是,我放弃了这个作为一个可行的解决方案,因为它需要在每次启动/停止引擎时运行,并且根据我的喜好很脆弱