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?
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.
$ echo $ USER
$ Sudo usermod -aG docker $ USER
$ Sudo systemctl Docker neu starten
$ docker ps
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:
- Sudo Docker ps
- 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.
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
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.