513 votes

Obtention de l'autorisation refusée lors d'une tentative de connexion au socket du démon Docker à l'adresse unix: ///var/run/docker.sock

Je suis nouveau au docker. Je viens d'essayer d'utiliser docker sur ma machine locale (Ubuntu 16.04) avec Jenkins.

J'ai configuré un nouveau travail avec le script de pipeline ci-dessous.

 node {
    stage('Build') {
      docker.image('maven:3.3.3').inside {
        sh 'mvn --version'
      }
    }
}
 

Mais cela échoue avec l'erreur ci-dessous.

entrez la description de l'image ici

848voto

austingray Points 1907

L'utilisateur jenkins doit être ajoutée au groupe docker:

sudo usermod -a -G docker jenkins

Redémarrez Jenkins.

Modifier

Si vous arrivez à cette question de débordement de pile, car vous recevez ce message de docker, mais vous n'utilisez pas de jenkins, plus probablement, l'erreur est la même: votre utilisateur non privilégié ne fait pas partie du menu fixe du groupe.

Vous pouvez le faire:

sudo usermod -a -G docker alice

ou quel que soit votre nom d'utilisateur est.

Vous pouvez le vérifier à la fin de faire cat /etc/group et voyez une comme ceci:

docker:x:998:alice

dans l'une des lignes.

Comme Ilya Kolesnikov est dit dans le commentaire, reconnectez-vous!

227voto

Kevin Garay Points 383

Mes premières solutions ont été:

 usermod -aG docker jenkins
usermod -aG root jenkins
chmod 664 /var/run/docker.sock
 

Mais aucun d'eux ne fonctionne pour moi, j'ai essayé:

 chmod 777 /var/run/docker.sock
 

Cela fonctionne, mais je ne sais pas si c'est le bon appel.

113voto

shellhub Points 516

Succès pour moi

 sudo usermod -a -G docker $USER
reboot
 

44voto

Urosh T. Points 618

2018-08-19

J'ai été coincé pendant des jours sur celui-ci et comme je n'ai pas trouvé une réponse complète avec le pourquoi et le comment, je vais en poster un pour d'autres gens qui trébuchent sur le même problème et des réponses à partir de ci-dessus ne fonctionnent pas.

Ce sont les 3 étapes cruciales lors de l'exécution de Jenkins à l'intérieur de docker:

  1. Monter la douille /var/run/docker.sock de la jenkins conteneur afin d'être en mesure d'utiliser le menu fixe à partir de l'hôte.
  2. Vous devez installer le panneau à l'intérieur du conteneur pour l'utiliser. C' est une grande et simple de l'article sur la façon de le faire. Notez que des versions plus récentes, peut-être déjà installé docker
  3. Vous exécutez sudo usermod -a -G docker jenkins afin d'ajouter jenkins pour le menu fixe du groupe. Cependant, ici, vous pourriez avoir un problème de permission si l'hôte docker et le conteneur docker n'ont pas le même id de groupe de sorte qu'il est très important d'ajuster le conteneur docker du gid pour être le même que le docker gid

Vous pouvez faire cela comme une partie d'un script de lancement ou tout simplement en utilisant exec , et de le faire manuellement: groupmod -g <YOUR_HOST_DOCKER_GID> docker.

Aussi, ne pas modifier les autorisations de l' /var/run/docker.sock 777 ou des trucs comme ça parce que c'est un gros risque de sécurité.

Espérons que cette aide

15voto

J'ai ajouté l'utilisateur jenkins au groupe racine et ai redémarré les jenkins et cela a commencé à fonctionner.

 sudo usermod -a -G root jenkins
sudo service jenkins restart
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X