Mon Jenkins n'est pas exécuté dans le conteneur Docker, il s'agit simplement d'une installation traditionnelle sur VPS. J'ai eu l'erreur suivante lors de l'exécution d'un simple projet test . J'utilise Ubuntu 14, Java 7 et Jenkins stable. J'ai essayé toutes les méthodes que je peux trouver sur Google, mais je ne peux pas le faire fonctionner.
J'essaie d'exécuter ce shell
docker build --pull=true -t nick/hello-jenkins:$GIT_COMMIT .
Après le changement de code.
Voici l'erreur:
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
Je peux exécuter «Docker» dans la console en tant que racine sans problème, pourquoi Jenkins ne peut pas essayer une commande Shell qui exécute «Docker» Que se passe-t-il? Complètement perdu.......
Dans votre terminal de serveur VPS, procédez comme suit pour ajouter votre utilisateur Jenkins au groupe de menus fixes:
Sudo usermod -aG docker jenkins
Puis redémarrez votre serveur jenkins pour actualiser le groupe.
Tenez compte de tout problème de sécurité que cela pourrait engendrer:
Avertissement: le groupe de menus fixe accorde des privilèges équivalents à l'utilisateur root. Pour plus d'informations sur l'impact de cette modification sur la sécurité de votre système, voir Surface d'attaque du démon Docker.
Reportez-vous à la docs
Edit (mentionné par @iger): Assurez-vous simplement de redémarrer Jenkins en ligne de commande (c'est-à-dire que le service Sudo jenkins est redémarré), mais pas via le point de terminaison reste (http: /// restart)
docker run -d -u root --restart on-failure -p "8080:8080" -p "50000:50000" -v $PWD/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
root
utilisateur requis car sans cela, vous ne pourrez pas exécuter de tâche racine, exemple: apk update && apk install ...