Die Berechtigung wurde verweigert, wenn Docker nach der Installation als Snap ausgeführt wurde

33

Ich habe Docker über den Softwarespeicher installiert, der darauf hinwies, dass es sich um ein Snap-Paket handelte. Was für mich in Ordnung ist, denke ich, aber leider funktioniert jeder Docker-Befehl, den ich ausprobiert habe, nicht:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Irgendeine Idee, wie man das behebt?

Bearbeiten: Ich habe dies vorerst umgangen, indem ich Docker aus Dockers eigenen Repositorys installiert habe , was möglicherweise auch in Zukunft für Leute funktioniert, die diese Frage durchsuchen. Ich lasse die Frage jedoch für diejenigen offen, die sie über den Snap ausführen möchten.

Vincent
quelle
Installierter Docker von offiziellen Docker-Repos. Docker wurde bereits ausgeführt, als ich meinen Benutzer zur dockerGruppe hinzufügte. Docker wurde id -nGnicht angezeigt, und ein dockerBefehl führte zu einem Fehler, bei dem die Berechtigung verweigert wurde. Abmelden und erneutes Anmelden funktionierte nicht, da der Docker-Systemprozess weiter ausgeführt wird. Beim Neustarten des Systems oder beim Neustarten von Docker wurde der Benutzer als Teil der Docker-Gruppe angezeigt und die Ausführung von Docker-Befehlen zugelassen. HINWEIS: 0 Wiederholungen, kann keinen Kommentar hinzufügen.
Santosh Patel

Antworten:

33

Dies ist von der GitHub-Seite, haben Sie genau diese Schritte versucht:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Vom Docker-Schnellgithub

Mike Coleman
quelle
Ich hatte diese Seite nicht gesehen, also danke für den Link. Das heißt, da ich Ubuntu Core nicht verwende, muss ich den addgroupAnweisungen folgen , von denen ich denke , dass sie sich auf das beziehen, was ich getan habe, wie in den anderen Antworten angegeben. Leider würde ich es vorziehen, das derzeit funktionierende System nicht mehr zu berühren, aber ich würde es gerne hören, wenn jemand anderes dies versucht und es schafft, es zum Laufen zu bringen.
Vincent
2
Das Deaktivieren / Aktivieren von Docker Snap hat den Trick für mich gemacht, danke
Manish Kumar
1
Dies gilt auch für Ubuntu (Desktop) 19.04.
Nick Breen
31

Die Fehlermeldung besagt, dass Ihr aktueller Benutzer nicht auf die Docker-Engine zugreifen kann, da Ihnen die Berechtigungen zum Zugriff auf den Unix-Socket für die Kommunikation mit der Engine fehlen.

Vorübergehende Lösung

Verwenden Sie den sudoBefehl, um die Befehle jedes Mal mit erhöhten Berechtigungen auszuführen.

Dauerhafte (vorgeschlagene) Lösung

Fügen Sie den aktuellen Benutzer der dockerGruppe hinzu. Dies kann durch Eingabe erreicht werden

sudo usermod -a -G docker $USER

Sie müssen sich abmelden und erneut anmelden, damit die Gruppenmitgliedschaft wirksam wird.

Quelle: techoverflow.net

ADDB
quelle
1
Ihr Google-fu ist anscheinend besser als meins. Das funktioniert leider nicht. Erstens dockerexistierte die Gruppe nicht. Ich habe dann zuerst sudo addgroup dockerIhren Befehl ausgeführt und dann erneut ausgeführt, mich dann abgemeldet und wieder angemeldet. Leider bleibt der in der Frage gezeigte Fehler bestehen ...
Vincent
2
@Vincent du hast nicht vergessen, dass Gruppenänderungen nicht sofort stattfinden, oder? Versuchen Sie es newgrp dockeroder
melden
Nee, sorry, vergessen zu erwähnen , dass - ich meinen Kommentar aktualisiert , während Sie reagiert :) Lauf groups vincentgibt:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent
@Vincent nur als Referenz, Ihr Docker-Daemon ist gestartet, oder? Versuchen sudo /etc/init.d/docker statusoder sudo service docker statustesten Sie dies.
ADDB
Hmm, ich glaube nicht, dass das funktioniert, weil es ein Kinderspiel ist : paste.ubuntu.com/25219172 Das heißt, ps cax | grep dockerddas gibt es 31034 ? Ssl 0:05 dockerd.
Vincent
6

Ich gehe davon aus, dass sich Ihr Benutzername bereits in der Docker-Gruppe befindet. Um dies zu überprüfen, geben Sie den folgenden Befehl ein.

id -nG

Wenn nicht, müssen Sie Ihren Benutzer mit dem folgenden Befehl zur Docking-Gruppe hinzufügen.

sudo groupadd docker
sudo usermod -aG docker $USER

Wenn Sie den Befehl ausführen sudo systemctl start docker, wird ein Docker-Prozess erstellt. Dieser Docker-Prozess enthält einen dockerdDaemon-Thread. Der Befehl erstellt auch einen Standard- docker.sockUnix-Socket. Der docker.sockSocket wird ständig vom dockerdDaemon-Thread abgehört . Auf diese Weise können Sie IPCs auf Kernel-Ebene mit docker.pidprocess ausführen . Um diesen Docker-Socket verwenden zu können, benötigen Sie die entsprechenden Berechtigungen auf Prozess- ( docker.pid) und Dateiebene ( docker.sock). Wenn Sie also die folgenden zwei Befehle ausführen, sollte das Problem behoben sein. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

Uddhav Gautam
quelle
Nur das funktioniert für Ubuntu 18.04. Vielen Dank Uddhav Gautam
Sabbir
3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

erfordert keinen Neustart und ist sicherer

Nahshon paz
quelle
1

Sie sollten den Benutzer der Docker-Gruppe hinzufügen ( siehe offizielle Dokumente ).

Sie können sudovor dem Befehl hinzufügen oder den Benutzer mit dem folgenden dockerBefehl zur Gruppe hinzufügen :

sudo usermod -aG docker <USER>

Melden Sie sich ab und wieder an, damit Ihre Gruppenmitgliedschaft erneut bewertet wird.

Heesen Ponnusawmy
quelle
Da dieser Inhalt bei diesem Link verschwinden kann, fügen Sie bitte die relevanten Details hier hinzu.
Chai T. Rex
Keine Notwendigkeit, die andere Antwort erwähnte bereits das Hinzufügen des Benutzers zur Gruppe - es hat nicht geholfen. (Auch kein Grund, warum das für die Snap-Installation helfen würde, aber nicht für die reguläre Installation.)
Vincent