Grund:Die Fehlermeldung bedeutet, dass der aktuelle Benutzer nicht auf die Docker-Engine zugreifen kann, da der Benutzer nicht über ausreichende Berechtigungen verfügt, um auf den UNIX-Socket zuzugreifen, um mit der Engine zu kommunizieren.
Schnelle Lösung:
-
Führen Sie den Befehl als root mit sudo aus.
sudo docker ps
-
Ändern Sie die Berechtigungen von /var/run/docker.sock für den aktuellen Benutzer.
sudo chown $USER /var/run/docker.sock
Achtung :Ausführen von sudo chmod 777 /var/run/docker.sock wird Ihr Problem lösen, aber es wird den Docker-Socket für alle öffnen, was eine Sicherheitslücke darstellt, wie von @AaylaSecura hervorgehoben. Daher sollte es nicht verwendet werden, außer zu Testzwecken auf dem lokalen System.
Dauerlösung:
Fügen Sie den aktuellen Benutzer zur Docker-Gruppe hinzu.
sudo usermod -a -G docker $USER
Hinweis:Sie müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden.
Lesen Sie diesen Blog, um mehr über die Verwaltung von Docker als Nicht-Root-Benutzer zu erfahren.
Für diejenigen, die neu in der Shell sind, der Befehl:
$ sudo usermod -aG docker $USER
muss $USER
haben in Ihrer Shell definiert. Dies ist oft standardmäßig vorhanden, aber Sie müssen den Wert möglicherweise in einigen Shells auf Ihre Anmelde-ID setzen.
Das Ändern der Gruppen eines Benutzers ändert keine bestehenden Anmeldungen, Terminals und Shells, die ein Benutzer geöffnet hat. Um eine erneute Anmeldung zu vermeiden, können Sie einfach Folgendes ausführen:
$ newgrp docker
um Zugriff auf diese Gruppe in Ihrer aktuellen Shell zu erhalten.
Sobald Sie dies getan haben, hat der Benutzer effektiv Root-Zugriff auf den Server, also tun Sie dies nur für Benutzer, denen uneingeschränkter sudo-Zugriff vertraut wird.