JenkinsジョブでDockerコマンドを実行できると考えて、jenkins
ユーザーをdocker
グループに追加しました。 jenkins
ユーザーに切り替えると、(手動で)動作することを確認できます。
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ビルド/ジョブの実行中は、権限がありません。
# 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ソケットに与えることで問題は解決すると思います。これは、次の行を追加することにより、構成ファイルでdockerデーモンの起動オプションを構成して変更できます。
DOCKER_OPTS=' -G jenkins'
Ubuntuで/etc/default/docker
は、Docker構成ファイルです。
Jenkinsを使用してgroups
コマンドを実行します。 docker
グループはありますか?そうでない場合は、そのJenkinsスレーブを再起動してみてください。または、Jenkinsのslave.jarプロセスを強制終了します。psaux | grep jenkins