it-swarm.com.de

So beheben Sie das Docker: Die Berechtigung wurde verweigert

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?

49
Carlos Andres

Wenn Sie Docker als Benutzer ohne Rootberechtigung ausführen möchten, müssen Sie es der Docker-Gruppe hinzufügen.

  1. Erstellen Sie die Docker-Gruppe.

    $ Sudo groupadd docker
    
  2. Fügen Sie Ihren Benutzer der Docker-Gruppe hinzu.

    $ Sudo usermod -aG docker $USER
    
  3. 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

64
mkb

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)

86
Galigator
  1. docker-Gruppe hinzufügen
$ Sudo groupadd docker
  1. fügen Sie Ihren aktuellen Benutzer der Docker-Gruppe hinzu
$ Sudo usermod -aG docker $USER

3.Session auf Docker-Gruppe umschalten

$newgrp - docker
  1. lauf
$docker run hello-world
7
wei.liang
  1. Aktuellen Benutzer zur Gruppe docker hinzufügen
Sudo usermod -aG docker $USER
  1. Ändern Sie die Berechtigungen des Docker-Sockets, um eine Verbindung zum Docker-Daemon herzustellen. /var/run/docker.sock
Sudo chmod 666 /var/run/docker.sock
7
aabdulwahed

Ich löse diesen Fehler mit dem Befehl:

$ Sudo chmod 666 /var/run/docker.sock
5
kumar

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!

0
Carlos Andres

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/lightdmvor 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

0
Herbert