web-dev-qa-db-fra.com

Comment réparer docker: Vous avez un problème d'autorisation refusée

J'ai installé Docker sur ma machine sous Ubuntu. Après que j'ai installé le menu fixe, quand je lance

Sudo docker run hello-world

Tout va bien, mais je veux cacher le mot Sudo pour abréger la commande.

Si j'écris la commande sans le mot Sudo

docker run hello-world

Cela affiche ce qui suit:

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'.

C'est arrivé pareil quand j'essaie de faire

docker-compose up

Comment puis-je résoudre ça?

49
Carlos Andres

Si vous souhaitez exécuter le menu fixe en tant qu'utilisateur non root, vous devez l'ajouter au groupe de menus.

  1. Créez le groupe de docker.

    $ Sudo groupadd docker
    
  2. Ajoutez votre utilisateur au groupe de menus fixes.

    $ Sudo usermod -aG docker $USER
    
  3. Déconnectez-vous et connectez-vous à nouveau et exécutez.

    $ docker run hello-world
    

Extrait de la documentation officielle de docker: https://docs.docker.com/install/linux/linux-linux-postinstall/#manage-docker-as-a-non-root-user

64
mkb

Après une mise à niveau, la permission m'a été refusée. Les étapes de «mkb» étapes post-installation n'ont aucune modification, car mon utilisateur faisait déjà partie du groupe «docker». Je réessaye deux fois sans succès.

Après une heure de recherche, cette solution suivante a finalement fonctionné:

Sudo chmod 666 /var/run/docker.sock

La solution est venue de Olshansk .

On dirait que la mise à niveau a recréé le socket sans autorisation suffisante pour le groupe "docker".

Problèmes: Ce disque chmod ouvre un trou de sécurité et après chaque redémarrage, cette erreur se répète encore et encore et vous devez réexécuter la commande ci-dessus à chaque fois. Je veux une solution une fois pour toutes. Pour cela vous avez deux problèmes:

1) Problème avec SystemD: le socket sera créé uniquement avec le propriétaire 'root' et le groupe 'root' . Vous pouvez vérifier ce premier problème avec cette commande: 

ls -l /lib/systemd/system/docker.socket

Si tout cela est bon, vous devriez voir "root/docker" et non "root/root".

2) Problème avec connexion graphique: https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group peut vérifier ce deuxième problème avec cette commande: 

groups

Si tout est correct, vous devriez voir le groupe docker dans la liste . Sinon, essayez la commande 

Sudo su $USER  -c groups

si vous voyez alors le groupe docker c'est à cause du bogue.

Solutions: Si vous parvenez à trouver une solution de contournement pour la connexion graphique, le travail devrait être fait:

Sudo chgrp docker /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

Mais si vous ne pouvez pas gérer ce bogue, une solution pas si mauvaise pourrait être la suivante:

Sudo chgrp $USER /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

Cela fonctionne parce que vous êtes dans un environnement graphique et êtes probablement le seul utilisateur de votre ordinateur . Dans les deux cas, vous avez besoin d’un redémarrage (ou d’un Sudo chmod 666 /var/run/docker.sock).

86
Galigator
  1. ajouter un groupe de dockers
$ Sudo groupadd docker
  1. ajouter votre utilisateur actuel au groupe de docker
$ Sudo usermod -aG docker $USER

3. basculer la session vers le groupe de dockers

$newgrp - docker
  1. courir
$docker run hello-world
7
wei.liang
  1. Ajouter l'utilisateur actuel au groupe docker
Sudo usermod -aG docker $USER
  1. Modifier les autorisations du docker socket pour pouvoir se connecter au démon docker /var/run/docker.sock
Sudo chmod 666 /var/run/docker.sock
7
aabdulwahed

Je résous cette erreur avec la commande:

$ Sudo chmod 666 /var/run/docker.sock
5
kumar

utiliser cette commande

Sudo usermod -aG docker $USER

puis redémarrez votre ordinateur cela a fonctionné pour moi.

lightdm et kwallet sont livrés avec un bogue qui semble ne pas transmettre les groupes supplémentaires lors de la connexion. Pour résoudre ce problème, j’ai également, à côté de Sudo usermod -aG docker $USER, commenté

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

à

#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so

dans /etc/pam.d/lightdmavant de redémarrer, pour que le groupe de dockers produise réellement ses effets.

bug: https://bugs.launchpad.net/lightdm/+bug/1781418 et ici: https://bugzilla.redhat.com/show_bug.cgi?id=1581495

0
Herbert