91 votes

Comment corriger le message "dial unix /var/run/docker.sock : connect : permission denied" lorsque les autorisations de groupe semblent correctes ?

J'ai soudainement des problèmes après une mise à jour d'Ubuntu 18.04 : auparavant, j'ai utilisé Docker sans problème sur le système, mais soudainement, je ne peux pas. D'après ce que je peux dire, les autorisations semblent correctes :

$ docker run hello-world
docker: 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.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
$ ls -last /var/run/docker.sock 
0 srw-rw---- 1 root docker 0 Jul 14 09:10 /var/run/docker.sock
$ whoami
brandon
$ cat /etc/group | grep docker
docker:x:995:brandon
nvidia-docker:x:994:

EDITAR:

Informations sur le groupe :

$ groups
brandon
$ groups brandon
brandon : brandon adm cdrom sudo dip plugdev games lpadmin sambashare docker
$ whoami
brandon

Mise à jour

Depuis le post original où j'ai mis à jour un système de 17.04 à 18.04, j'ai fait deux mises à jour de 16.04 à 18.04, et aucun des systèmes ultérieurs n'a eu le problème. Il se peut donc que le problème soit lié au processus de mise à niveau de 17.04 à 18.04. Je n'ai pas encore effectué une nouvelle installation de 18.04.

1 votes

Est-ce que ça marche si vous exécutez sudo docker run hello-world ?

2 votes

Que se passe-t-il si vous exécutez newgrp docker et réessayer depuis le même terminal ?

0 votes

@mviereck @BMitch - sudo a fonctionné, j'avais essayé plus tôt mais avec un script enveloppant une commande docker, donc cela a échoué (oops). newgrp docker me donne un shell où l'exécution de la commande sans sudo travaux. Il y a donc quelque chose de bizarre avec mon shell de connexion ?

202voto

Nahshon paz Points 241
sudo setfacl --modify user:<user name or ID>:rw /var/run/docker.sock

Il ne nécessite pas de redémarrage et est plus sûr que usermod ou chown.

comme l'a souligné @mirekphd, l'ID utilisateur est requis lorsque l'utilisateur nom n'existe qu'à l'intérieur du conteneur, mais pas sur l'hôte.

0 votes

Merci. Il se trouve que j'ai toujours ce système bogué, mais je ne sais pas pour combien de mois encore ! Il se trouve que cela fonctionne. Je vais vérifier si cela persiste au redémarrage.

2 votes

(Il ne semble pas persister à travers les redémarrages)

0 votes

@bbarker unix.stackexchange.com/questions/372244/ Bien que sur de nombreux systèmes, ceci est persistant

53voto

Karen Danielyan Points 316

Ajouter l'utilisateur au groupe docker.

sudo usermod -aG docker $USER
sudo reboot

3 votes

Peut-être que quelque chose m'échappe, mais la sortie de "groups brandon" inclut déjà "docker", dans mon cas, comme indiqué ci-dessus. Mais c'est généralement un bon conseil.

1 votes

Le redémarrage aide :)

10 votes

La création d'une nouvelle session utilisateur (se déconnecter et se reconnecter) suffit à mettre à jour les groupes de sessions utilisateur. Aucun redémarrage n'est nécessaire.

14voto

Alex Sandro Points 41

Ubuntu 18:04

sudo setfacl --modify user:$USER:rw /var/run/docker.sock

9voto

Fahd Rahali Points 31

Le moyen d'y remédier est de courir :

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker

cela fonctionne pour moi :)

6voto

Goldus Points 41

D'une manière ou d'une autre, j'ai trouvé cette page lorsque je n'avais pas les permissions correctes sur mon docker.sock après mon installation de Docker. Donc, si vous avez le même problème, vous pouvez lire ceci :

$ sudo adduser $USER docker ne fonctionne pas car le groupe est "Root" et non "docker".

$ ls -l /var/run/docker.sock srw-rw---- 1 Root Root 0 Jul 11 09:48 /var/run/docker.sock donc ça devrait être $ sudo adduser $USER Root

à partir d'une machine non installée sur Snap, le groupe est "docker".

# ls -l /var/run/docker.sock srw-rw---- 1 Root docker 0 Jul 3 04:18 /var/run/docker.sock La manière correcte est, selon docker.help vous vous devez exécuter ce qui suit AVANT sudo snap install docker

$ sudo addgroup --system docker $ sudo adduser $USER docker $ newgrp docker alors le groupe sera "docker".

$ ls -l /var/run/docker.sock srw-rw---- 1 Root docker 0 Jul 11 10:59 /var/run/docker.sock

Source : https://github.com/docker-archive/docker-snap/issues/1 (oui, premier numéro :D)

Le moyen le plus facile de le réparer est de courir :

$ sudo setfacl -m "g:docker:rw" /var/run/docker.sock

Et ensuite, comme il a déjà été mentionné, exécutez les commandes suivantes pour votre utilisateur :

$sudo addgroup --system docker
$sudo adduser $USER docker
$newgrp docker

C'est tout :) Amusez-vous bien !

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