Jenkins kullanıcısının neden Docker unix soketine erişim izni olmayabilir?


9

jenkinsKullanıcıyı dockerJenkins işlerinin Docker komutlarını çalıştırmasına izin vereceğini düşünerek gruba ekledim . Ben geçerseniz jenkinskullanıcı, bunu (el) çalışır doğrulayabilirsiniz:

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

Bununla birlikte, bir Jenkins derlemesi / işi sırasında izni yoktur:

# 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 git@github.com:<redacted>/docker-base-images.git # timeout=10
Fetching upstream changes from git@github.com:<redacted>/docker-base-images.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress git@github.com:<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

Bu Docker 1.3.0 ve Ubuntu 14.04.1 ile. Herhangi bir ipucu var mı?


Bu konuyla ilgili görünüyor . Yeniden başlatma bunu benim için çözdü.
smilly92

Yeniden başlatma bunu benim için çözmedi.
Matt W

1
Jenkins, Jenkins kullanıcısının ana grubundan başka grupları düşürüyor gibi görünüyor. Bir kabuktan id komutunu Jenkins kullanıcısı olarak çalıştırdığımda bunun docker grubunda olduğunu görüyorum, ancak kimliği serbest bir işte çalıştırdığımda, sadece Jenkins kullanıcısını gösteriyor. Henüz nasıl düzeltebileceğimi anlamadım.
Joseph Mulloy

Önce docker grubunda jenkins kullanıcısı olduğundan emin olun. Ardından, sorun yaşadığınız bağımlı master'a bağlıysa, bağlantısını kesin ve tekrar bağlayın. Bunu 'jenkinleri yönet' / 'düğümleri yönet' yoluyla yapın.
arminmor

Yanıtlar:


12

Docker unix soketine jenkins grup ayrıcalıklarının verilmesi sorunu çözdüğünü düşünüyorum. Bu, bu satırı ekleyerek yapılandırma dosyasındaki docker daemon başlangıç ​​seçeneklerinin yapılandırılmasıyla değiştirilebilir.

DOCKER_OPTS=' -G jenkins'

Ubuntu yılında /etc/default/dockerliman işçisi yapılandırma dosyasıdır.


Bu hala Ubuntu
16.04'teki

1

groupsKomutları jenkins kullanarak çalıştırın . Bir dockergrup görüyor musunuz ? Değilse, Jenkins kölesini yeniden başlatmayı deneyin. Veya sadece Jenkins slave.jar işlemini öldürün: ps aux | grep jenkins


Yukarıdaki adımlardan birkaçını yaptıktan sonra, çalışmasını sağlamak için son parça jenkins kölesini yeniden bağlamaktı. Bahşiş için teşekkürler.
Dean Poulin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.