Come risolvere l'errore di authorization di Docker quando viene triggersto da Jenkins

Il mio Jenkins non è eseguito nel contenitore Docker, solo tradional installare a VPS. Ho ottenuto il seguente errore durante l'esecuzione di un semplice progetto di test . Sto usando Ubuntu 14, java 7 e stabile Jenkins. Ho provato tutti i methods che posso trovare su Google, ma non posso farlo funzionare.

Sto cercando di eseguire questa shell

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

Dopo la modifica del codice.

Ecco un errore:

 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 

Posso eseguire 'docker' in console come root non è un problema, perché i jenkins non possono provare un command shell che gestisce 'docker'? Cosa sta succedendo? Completamente confuso …….

Nel terminal del server VPS, aggiungi questo command per aggiungere il tuo utente jenkins al gruppo docker:

 sudo usermod -aG docker jenkins 

Quindi riavviare il server jenkins per aggiornare il gruppo.

Tenere in considerazione tutti i problemi di sicurezza che potrebbero produrre:

Attenzione: il gruppo docker concede privilegi equivalenti all'utente root. Per dettagli su come questo impatto sulla sicurezza del sistema, vedere Docker Daemon Attack Surface.

Fare riferimento ai documenti