Ich habe Docker auf meinem Rechner installiert, auf dem ich Ubuntu OS habe. Nach dem ich Docker installiert habe, wenn ich renne
Sudo docker run hello-world
Alles in Ordnung, aber ich möchte das Wort Sudo
ausblenden, um den Befehl kurz zu machen.
Wenn ich den Befehl ohne das Wort Sudo
schreibe
docker run hello-world
Das zeigen die folgenden:
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'.
Es ist dasselbe passiert, wenn ich versuche zu machen
docker-compose up
Wie kann ich das beheben?
Wenn Sie Docker als Benutzer ohne Rootberechtigung ausführen möchten, müssen Sie es der Docker-Gruppe hinzufügen.
Erstellen Sie die Docker-Gruppe.
$ Sudo groupadd docker
Fügen Sie Ihren Benutzer der Docker-Gruppe hinzu.
$ Sudo usermod -aG docker $USER
Abmelden und erneut anmelden und ausführen.
$ docker run hello-world
Entnommen aus der offiziellen Dokumentation des Dockers: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
Nach einem Upgrade wurde mir die Berechtigung verweigert. Durch Ausführen der Schritte 'mkb' post Installationsschritte haben Sie nichts geändert, da sich mein Benutzer bereits in der Gruppe 'Docker' befand. Ich wiederhole es zweimal, ohne Erfolg.
Nach einer Suchstunde funktionierte diese Lösung endlich:
Sudo chmod 666 /var/run/docker.sock
Lösung kam aus Olshansk .
Sieht so aus, als hätte das Upgrade den Socket ohne ausreichende Berechtigung für die Gruppe 'Docker' neu erstellt.
Probleme: Diese harte chmod Sicherheitslücke wird geöffnet, und nach jedem Neustart wird dieser Fehler immer wieder angezeigt, und Sie müssen den obigen Befehl jedes Mal erneut ausführen. Ich möchte ein für alle Mal eine Lösung. Dafür haben Sie zwei Probleme:
1) Problem mit SystemD: Das Socket wird nur mit dem Eigentümer 'root' und der Gruppe 'root' ..__ erstellt. Sie können dieses erste Problem mit diesem Befehl überprüfen:
ls -l /lib/systemd/system/docker.socket
Wenn dies alles gut ist, sollten Sie 'root/docker' nicht 'root/root' sehen.
2) Problem mit grafischer Login: https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-nach-one-group Sie kann dieses zweite Problem mit diesem Befehl überprüfen:
groups
Wenn alles in Ordnung ist, sollte die Gruppe Docker in der Liste angezeigt werden. Wenn dies nicht der Fall ist, versuchen Sie den Befehl
Sudo su $USER -c groups
wenn Sie dann die Gruppe Docker sehen, liegt dies an dem Fehler.
Solutions: Wenn Sie eine Problemumgehung für die grafische Anmeldung erhalten, sollte dies folgende Aufgabe erfüllen:
Sudo chgrp docker /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket
Wenn Sie diesen Fehler nicht beheben können, könnte dies eine nicht so schlechte Lösung sein:
Sudo chgrp $USER /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket
Dies funktioniert, weil Sie sich in einer grafischen Umgebung befinden und wahrscheinlich der einzige Benutzer auf Ihrem Computer sind. In beiden Fällen benötigen Sie einen Neustart (oder einen Sudo chmod 666 /var/run/docker.sock)
$ Sudo groupadd docker
$ Sudo usermod -aG docker $USER
3.Session auf Docker-Gruppe umschalten
$newgrp - docker
$docker run hello-world
docker
hinzufügenSudo usermod -aG docker $USER
/var/run/docker.sock
Sudo chmod 666 /var/run/docker.sock
Ich löse diesen Fehler mit dem Befehl:
$ Sudo chmod 666 /var/run/docker.sock
benutze diesen Befehl
Sudo usermod -aG docker $USER
starten Sie dann Ihren Computer neu. Das hat bei mir funktioniert.
Um dieses Problem zu beheben, habe ich gesucht, wo mein Docker und mein Docker-Compose installiert sind. In meinem Fall wurde docker
in /usr/bin/docker
und docker-compose
im /usr/local/bin/docker-compose
-Pfad installiert. Dann schreibe ich das in mein Terminal:
Zum Docker:
Sudo chmod +x /usr/bin/docker
Zu docker-compose
:
Sudo chmod +x /usr/local/bin/docker-compose
Jetzt muss ich nicht mehr in meine Befehle das Wort Sudo
schreiben.
/ ************************************ * *********************** /
ERRATA:
Die beste Lösung für dieses Problem wurde von @mkasberg kommentiert. Ich zitiere Kommentar:
That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. Sudo groupadd docker, Sudo usermod -aG docker $USER.
Docs:
https://docs.docker.com/install/linux/linux-postinstall/
Danke vielmals!
lightdm und kwallet enthalten einen Fehler, der die zusätzlichen Gruppen beim Login nicht zu überschreiten scheint. Um dieses Problem zu lösen, musste ich neben Sudo usermod -aG docker $USER
auch einen Kommentar abgeben
auth optional pam_kwallet.so
auth optional pam_kwallet5.so
zu
#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so
in /etc/pam.d/lightdm
vor dem Neustart, damit die Docker-Gruppe tatsächlich Wirkung zeigt.
fehler: https://bugs.launchpad.net/lightdm/+bug/1781418 und hier: https://bugzilla.redhat.com/show_bug.cgi?id=1581495