当由Jenkins触发时如何解决Docker权限错误

我的Jenkins不在Docker容器中运行,只是传统的安装到VPS。 执行一个简单的testing项目时出现以下错误。 我使用的是Ubuntu 14,Java 7和稳定的Jenkins。 我尝试了所有的方法,我可以find谷歌,但不能得到它的工作。

我正试图执行这个shell

docker build --pull=true -t nick/hello-jenkins:$GIT_COMMIT . 

代码更改后。

这里是错误:

 Got permission denied while trying to connect to the Docker daemon socket at unix: .... 

 Started by user nicolas xu Building in workspace /var/lib/jenkins/workspace/hello-Jenkins > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/nicolasxu/hello-nick-jenkins.git # timeout=10 Fetching upstream changes from https://github.com/nicolasxu/hello-nick-jenkins.git > git --version # timeout=10 > git fetch --tags --progress https://github.com/nicolasxu/hello-nick-jenkins.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision d94ae21a8a2cf58ffc790dcad15bd851fb17df5a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f d94ae21a8a2cf58ffc790dcad15bd851fb17df5a > git rev-list d94ae21a8a2cf58ffc790dcad15bd851fb17df5a # timeout=10 [hello-Jenkins] $ /bin/sh -xe /tmp/hudson5076309502904684976.sh + docker build --pull=true -t nick/hello-jenkins:d94ae21a8a2cf58ffc790dcad15bd851fb17df5a . Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.27/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&pull=1&rm=1&shmsize=0&t=nick%2Fhello-jenkins%3Ad94ae21a8a2cf58ffc790dcad15bd851fb17df5a&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied Build step 'Execute shell' marked build as failure Finished: FAILURE 

我可以在控制台中运行'docker'作为root没有问题,为什么jenkins不能尝试运行'docker'的shell命令? 到底是怎么回事? 完全困惑…….

在您的VPS服务器terminal中,执行此操作将您的jenkins用户添加到泊坞窗组:

 sudo usermod -aG docker jenkins 

然后重新启动你的jenkins服务器来刷新组。

考虑到这可能产生的任何安全问题:

警告:docker组授予与root用户等效的权限。 有关这会如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。

参考文档