我已经将jenkins用户添加到了jenkins组,他们认为这将允许Jenkins作业运行Docker命令。 如果我切换到jenkins用户,我可以validation它的工作原理(手动):
ubuntu@hostname:~$ ps aux | grep java jenkins 2210 9.5 7.5 1950316 292896 ? Sl 00:01 1:00 /usr/bin/java -jar /data/jenkins/jenkins-1.586.war --httpPort=8080 -Xloggc:/var/log/jenkins/gc.log ubuntu@hostname:~$ getent group docker docker:x:999:jenkins ubuntu@hostname:~$ ls -la /var/run/docker.* -rw-r--r-- 1 root root 4 Oct 23 18:32 /var/run/docker.pid srw-rw---- 1 root docker 0 Oct 23 18:32 /var/run/docker.sock ubuntu@hostname:~$ sudo su -s /bin/bash jenkins jenkins@hostname:/home/ubuntu$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
但是,在Jenkins构build/作业期间,它没有权限:
# Job log Started by user Matt Wright Building on master in workspace /data/jenkins/jobs/docker-base-images-build/workspace [ssh-agent] Using credentials CI-jenkins [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Java/JNR ssh-agent [ssh-agent] Started. > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url [email protected]:<redacted>/docker-base-images.git # timeout=10 Fetching upstream changes from [email protected]:<redacted>/docker-base-images.git > git --version # timeout=10 using GIT_SSH to set credentials > git fetch --tags --progress [email protected]:<redacted>/docker-base-images.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 83c4463e7195b412a3a803dd7338210c1a772f55 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 83c4463e7195b412a3a803dd7338210c1a772f55 > git rev-list 83c4463e7195b412a3a803dd7338210c1a772f55 # timeout=10 [workspace] $ /bin/sh -xe /tmp/hudson5606381166745886966.sh + ./build.sh Sending build context to Docker daemon 2014/10/24 16:14:18 Post http:///var/run/docker.sock/v1.15/build?rm=1&t=<redacted>%2Fpython%3A3.4: dial unix /var/run/docker.sock: permission denied Build step 'Execute shell' marked build as failure [ssh-agent] Stopped. Notifying upstream projects of job completion Finished: FAILURE
这是与Docker 1.3.0和Ubuntu 14.04.1。 任何线索?
我想给jenkins组权限给docker unix套接字解决了这个问题。 通过添加这一行,可以通过在configuration文件中configurationdocker守护进程启动选项来修改这个选项
DOCKER_OPTS=' -G jenkins'
在Ubuntu /etc/default/docker是docker的configuration文件。
使用jenkins运行groups命令。 你看到一个docker组? 如果没有,尝试重新启动,jenkins奴隶。 或者杀死Jenkins的slave.jar进程:ps aux | grep jenkins