it-swarm.com.de

docker.sock-Berechtigung abgelehnt

Wenn ich versuche, einfache Docker-Befehle auszuführen, wie:

$ docker ps -a

Ich bekomme eine Fehlermeldung:

Berechtigung abgelehnt ... /var/run/docker.sock: connect: Berechtigung abgelehnt

Wenn ich Berechtigungen mit prüfe

$ ls -al /var/run/

Ich sehe diese Zeile:

srw-rw---- root docker docker.sock

Also folge ich einem Ratschlag in vielen Foren und füge einen lokalen Benutzer zur Docker-Gruppe hinzu:

$ Sudo usermod -aG docker $USER

Aber es hilft nicht. Ich bekomme immer noch die gleiche Fehlermeldung. Wie kann ich es reparieren?

19
Jacobian

Für diejenigen, die neu in der Shell sind, der Befehl:

$ Sudo usermod -aG docker $USER

muss $USER in Ihrer Shell definiert sein. Dies ist häufig standardmäßig vorhanden, aber Sie müssen möglicherweise den Wert Ihrer Anmelde-ID in einigen Shells festlegen.


Durch das Ändern der Gruppen eines Benutzers werden vorhandene Anmeldungen, Terminals und Shells, die ein Benutzer geöffnet hat, nicht geändert. Um eine erneute Anmeldung zu vermeiden, können Sie einfach Folgendes ausführen:

$ newgrp docker

zugriff auf diese Gruppe in Ihrer aktuellen Shell.


Sobald Sie dies getan haben, hat der Benutzer effektiv Root-Zugriff auf dem Server. Dies gilt nur für Benutzer, denen der uneingeschränkte Sudo-Zugriff vertraut ist.

47
BMitch
  1. Stellen Sie sicher, dass Ihre $ USER-Variable festgelegt ist

$ echo $ USER

$ Sudo usermod -aG docker $ USER

  1. Abmelden
  2. Starten Sie nach der Anmeldung den Docker-Dienst neu

$ Sudo systemctl Docker neu starten

$ docker ps

8
1nternetz

Grund: Die Fehlermeldung bedeutet, dass der aktuelle Benutzer nicht auf die Docker-Engine zugreifen kann, da der Benutzer nicht über ausreichende Berechtigungen für den Zugriff auf den UNIX-Socket verfügt, um mit der Engine zu kommunizieren.

Schnellkorrektur:

  1. Führen Sie den Befehl mit Sudo als root aus.

    - Sudo Docker ps

  2. Ändern Sie die Berechtigungen von /var/run/docker.sock für den aktuellen Benutzer.

    - Sudo chmod 777 /var/run/docker.sock

dauerhafte Lösung:

Fügen Sie den aktuellen Benutzer der Docking-Gruppe hinzu. Dies kann durch Eingabe erreicht werden

Sudo usermod -a -G docker $ USER


Hinweis: Sie müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden.

4
Nitish

Wie bereits erwähnt, gelten die Änderungen erst nach einem erneuten Login. Wenn Sie einen SSH-Vorgang durchführen und ein neues Terminal öffnen, hätte es in einem neuen Terminal funktioniert

Da Sie jedoch GUI verwendet und das neue Terminal geöffnet haben, wurden die Änderungen nicht übernommen. Deshalb ist der Fehler nicht verschwunden

Der folgende Befehl hat also seine Aufgabe erfüllt, es wurde lediglich ein erneutes Login verpasst

Sudo usermod -aG docker $USER
1
Tarun Lalwani

Da mein Benutzer ein AD-Benutzer ist, muss ich den AD-Benutzer der lokalen Gruppe hinzufügen, indem die Datei/etc/group manuell bearbeitet wird. Leider scheinen die adduser-Befehle nicht nsswitch-bewusst zu sein und erkennen keinen Benutzer, der nicht lokal definiert ist, wenn Sie einer Gruppe jemanden hinzufügen. 

Starten Sie dann/etc/group neu. Jetzt können Sie Docker ohne Sudo verwenden.

Grüße.

0
GSAN