Perché l'utente Jenkins potrebbe non disporre dell'autorizzazione per accedere al socket unix Docker?


9

Ho aggiunto l' jenkinsutente al dockergruppo pensando che avrebbe permesso ai lavori Jenkins di eseguire i comandi Docker. Se passo jenkinsall'utente, posso verificare che funzioni (manualmente):

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

Tuttavia, durante un build / lavoro Jenkins non ha i permessi:

# 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

Questo è con Docker 1.3.0 e Ubuntu 14.04.1. Qualche indizio?


Sembra legato a questo problema . Il riavvio ha risolto questo problema per me.
smilly92,

Il riavvio non ha risolto questo problema per me.
Matt W

1
Sembrerebbe che Jenkins lasci cadere gruppi diversi dal gruppo principale dell'utente di Jenkins. Quando eseguo il comando id da una shell come utente Jenkins vedo che si trova nel gruppo docker, ma quando eseguo id in un lavoro freestyle, mostra solo l'utente Jenkins. Non ho ancora capito come risolverlo.
Joseph Mulloy,

Per prima cosa assicurati di avere l'utente jenkins nel gruppo docker. Quindi se lo slave con cui si riscontrano problemi è collegato al master, scollegare e ricollegarlo. Fallo tramite "gestisci jenkins" / "gestisci nodi".
Arminmor,

Risposte:


12

Penso che dare i privilegi di gruppo jenkins al socket docker unix risolva il problema. Questo può essere modificato con la configurazione delle opzioni di avvio del demone docker nel file di configurazione aggiungendo questa riga

DOCKER_OPTS=' -G jenkins'

In Ubuntu /etc/default/dockerè il file di configurazione della finestra mobile.


Questa è ancora la mia soluzione ideale per le nuove installazioni su Ubuntu 16.04
lead_brogrammer

1

Esegui il groupscomando utilizzando jenkins. Vedi un dockergruppo? Altrimenti, prova a riavviare lo schiavo Jenkins. O semplicemente uccidi il processo slave.jar di Jenkins: ps aux | grep jenkins


Dopo aver eseguito alcuni dei passaggi precedenti, l'ultimo pezzo per farlo funzionare è stato ricollegare lo schiavo jenkins. Grazie per il consiglio.
Decano Poulin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.