Wenn ich versuche, einfache Docker-Befehle auszuführen, wie:
$ docker ps -a
Ich erhalte eine Fehlermeldung:
Berechtigung verweigert ... /var/run/docker.sock: connect: Berechtigung verweigert
Wenn ich Berechtigungen mit überprüfe
$ ls -al /var/run/
Ich sehe diese Zeile:
srw-rw---- root docker docker.sock
Ich folge also einem Rat aus vielen Foren und füge der Docker-Gruppe einen lokalen Benutzer hinzu:
$ sudo usermod -aG docker $USER
Aber es hilft nicht. Ich erhalte immer noch die gleiche Fehlermeldung. Wie kann ich es reparieren?
sudo docker ps
für Sie?sudo docker ps
funktioniert. Aber ich muss mit Docker unter meinem lokalen Benutzer arbeiten.Antworten:
Für diejenigen, die neu in der Shell sind, der Befehl:
muss
$USER
in Ihrer Shell definiert haben . Dies ist häufig standardmäßig vorhanden, aber möglicherweise müssen Sie den Wert in einigen Shells auf Ihre Anmelde-ID festlegen.Durch Ändern der Benutzergruppen werden vorhandene Anmeldungen, Terminals und Shells, die ein Benutzer geöffnet hat, nicht geändert. Um zu vermeiden, dass Sie sich erneut anmelden, können Sie einfach Folgendes ausführen:
um Zugriff auf diese Gruppe in Ihrer aktuellen Shell zu erhalten.
Sobald Sie dies getan haben, hat der Benutzer effektiv Root-Zugriff auf dem Server. Tun Sie dies also nur für Benutzer, denen ein uneingeschränkter Sudo-Zugriff anvertraut ist.
quelle
--userns=host
.newgrp
funktionierte nur dieser Befehl.Stellen Sie sicher, dass Ihre
$USER
Variable gesetzt istAusloggen
Starten Sie nach der Anmeldung den Docker-Dienst neu
quelle
Grund: Die Fehlermeldung bedeutet, dass der aktuelle Benutzer nicht auf die Docker-Engine zugreifen kann, da der Benutzer nicht über genügend Berechtigungen verfügt, um auf den UNIX-Socket zuzugreifen und mit der Engine zu kommunizieren.
Schnelle Lösung:
Führen Sie den Befehl mit sudo als root aus.
Ändern Sie die Berechtigungen von /var/run/docker.sock für den aktuellen Benutzer.
Achtung : Wenn Sie sudo chmod 777 /var/run/docker.sock ausführen, wird Ihr Problem gelöst, aber der Docker-Socket wird für alle Personen geöffnet, bei denen es sich um eine Sicherheitslücke handelt, auf die @AaylaSecura hingewiesen hat. Daher sollte es nicht verwendet werden, außer zu Testzwecken auf dem lokalen System.
Permanente Lösung:
Fügen Sie den aktuellen Benutzer zur Docker-Gruppe hinzu.
Hinweis: Sie müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden.
In diesem Blog erfahren Sie mehr über die Verwaltung von Docker als Nicht-Root-Benutzer.
quelle
Wie bereits im Kommentar erwähnt, werden die Änderungen erst nach Ihrer erneuten Anmeldung übernommen. Wenn Sie eine SSH durchgeführt und ein neues Terminal geöffnet hätten, hätte dies in einem neuen Terminal funktioniert
Da Sie jedoch die GUI verwendet und das neue Terminal geöffnet haben, wurden die Änderungen nicht übernommen. Aus diesem Grund ist der Fehler nicht behoben
Der folgende Befehl hat seinen Job gemacht, es wurde nur ein erneuter Login verpasst
quelle
Da mein Benutzer ein AD-Benutzer ist, muss ich den AD-Benutzer zur lokalen Gruppe hinzufügen, indem ich die Datei / etc / group manuell bearbeite. Leider scheinen die adduser-Befehle nicht nsswitch-fähig zu sein und erkennen keinen Benutzer, der nicht lokal definiert ist, wenn jemand zu einer Gruppe hinzugefügt wird.
Starten Sie dann / etc / group neu oder aktualisieren Sie sie. Jetzt können Sie Docker ohne Sudo verwenden.
Grüße.
quelle
Als Root-Benutzer in den Container schlagen
docker exec -it --user root <dc5> bash
Erstellen Sie eine Docker-Gruppe, falls diese noch nicht erstellt wurde
groupadd -g 999 docker
Benutzer zur Docker-Gruppe hinzufügen
usermod -aG docker jenkins
Berechtigungen ändern
chmod 777 /var/run/docker.sock
quelle
Sie müssen Docker als Nicht-Root-Benutzer verwalten. So erstellen Sie die Docker-Gruppe und fügen Ihren Benutzer hinzu:
Erstellen Sie die Docker-Gruppe.
$ sudo groupadd docker
Fügen Sie Ihren Benutzer zur Docker-Gruppe hinzu.
$ sudo usermod -aG docker $USER
Melden Sie sich ab und wieder an, damit Ihre Gruppenmitgliedschaft neu bewertet wird.
Beim Testen auf einer virtuellen Maschine muss die virtuelle Maschine möglicherweise neu gestartet werden, damit die Änderungen wirksam werden.
Melden Sie sich in einer Linux-Desktopumgebung wie X Windows vollständig von Ihrer Sitzung ab und dann wieder an.
Unter Linux können Sie auch den folgenden Befehl ausführen, um die Änderungen an Gruppen zu aktivieren:
$ newgrp docker
Stellen Sie sicher, dass Sie Docker-Befehle ohne sudo ausführen können.
$ docker run hello-world
quelle