Ich habe Docker auf meinem Computer installiert, auf dem ich Ubuntu OS habe. Danach habe ich Docker installiert, wenn ich laufe
sudo docker run hello-world
Alles ist in Ordnung, aber ich möchte das Wort ausblenden sudo
, um den Befehl zu verkürzen.
Wenn ich den Befehl ohne das Wort schreibe sudo
docker run hello-world
Das zeigt Folgendes an:
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 genauso passiert, wenn ich versuche zu machen
docker-compose up
Wie kann ich das beheben?
docker
docker-compose
Carlos Andres
quelle
quelle
Antworten:
Wenn Sie Docker als Nicht-Root-Benutzer ausführen möchten, müssen Sie es der Docker-Gruppe hinzufügen.
Entnommen aus der offiziellen Docker-Dokumentation: Docker als Nicht-Root-Benutzer verwalten
quelle
sudo systemctl restart docker
docker
Gruppe im Wesentlichen Root-Zugriff gewährt , ohne regelmäßige Sudo-Richtlinien und -Prüfungen durchzusetzen. Weitere Informationen und Erläuterungen finden Sie in der GitHub- Ausgabe Nr. 9976 .Nach einem Upgrade wurde mir die Erlaubnis verweigert. Durch Ausführen der Schritte "mkb" nach der Installation hat sich nichts geändert, da mein Benutzer bereits in der Gruppe "Docker" war. Ich versuche es auf jeden Fall zweimal ohne Erfolg.
Nach einer Suchstunde funktionierte diese folgende Lösung endgültig:
Die Lösung kam aus Olshansk .
Es sieht so aus, als hätte das Upgrade den Socket ohne ausreichende Berechtigung für die Docker-Gruppe neu erstellt.
Probleme
Diese harte chmod offene Sicherheitslücke und nach jedem Neustart tritt dieser Fehler immer wieder auf 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
: Der Socket wird nur mit dem Eigentümer 'root' und der Gruppe 'root' erstellt.Sie können dieses erste Problem mit diesem Befehl überprüfen:
Wenn dies alles gut ist, sollten Sie
root/docker
"nichtroot/root
" sehen.2) Problem mit der grafischen Anmeldung : /superuser/1348196/why-my-linux-account-only-belongs-to-one-group
Sie können dieses zweite Problem mit diesem Befehl überprüfen:
Wenn alles korrekt ist, sollte die Docker- Gruppe in der Liste angezeigt werden . Wenn nicht, versuchen Sie den Befehl
Wenn Sie dann die Docker- Gruppe sehen, liegt dies an dem Fehler.
Lösungen
Wenn Sie eine Problemumgehung für die grafische Anmeldung erhalten, sollte dies folgende Aufgabe erfüllen:
Aber wenn Sie diesen Fehler nicht bewältigen können, könnte eine nicht so schlechte Lösung folgende sein:
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
)quelle
:ro
am Ende gemountet ... sobald ich hinzufügte, dass ich gut zu gehen warquelle
newgrp
Befehl forderte zur Eingabe eines Kennworts auf und akzeptierte mein Benutzerkennwort nicht. Stattdessen wurdesu - $USER
gearbeitet, um das Abmelden / Anmelden zu vermeiden.docker
Gruppe hinzufügen/var/run/docker.sock
quelle
Ich löse diesen Fehler mit dem Befehl:
quelle
Sie können jederzeit einen
Manage Docker as a non-root user
Absatz in den Dokumenten https://docs.docker.com/install/linux/linux-postinstall/ ausprobieren .Wenn das Problem weiterhin besteht, können Sie den folgenden Befehl ausführen, um das Problem zu beheben:
quelle
chmod 666
ist eine Sicherheitskatastrophe, den Docker-Socket für alle (mit ) lesbar oder beschreibbar zu machen ... Dies sollte niemals empfohlen werden.Dies behebt mein Problem.
quelle
Um dieses Problem zu beheben, habe ich gesucht, wo mein Docker und Docker-Compose installiert sind. In meinem Fall
docker
wurde in installiert/usr/bin/docker
unddocker-compose
wurde in installiert/usr/local/bin/docker-compose
Pfad . Dann schreibe ich das in mein Terminal:Zum Docker:
An
docker-compose
:Jetzt muss ich das Wort nicht mehr in meine Befehle schreiben
sudo
/ **************************************************** ********************** /
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/Vielen Dank!
quelle
docker
Gruppe hinzufügen , wie in den Dokumenten angegeben.sudo groupadd docker
,sudo usermod -aG docker $USER
.lightdm und kwallet werden mit einem Fehler ausgeliefert, der die zusätzlichen Gruppen beim Anmelden nicht zu bestehen scheint. Um dies zu lösen, musste ich mich außerdem
sudo usermod -aG docker $USER
dazu äußernzu
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
quelle
Verwenden Sie diesen Befehl
Starten Sie dann Ihren Computer neu. Dies hat bei mir funktioniert.
quelle
Ernsthaft Leute. Fügen Sie Docker nicht zu Ihren Gruppen hinzu oder ändern Sie die Socket-Position (ohne ein härtendes SELinux). Dies ist eine einfache Möglichkeit, ein Root-Privesc zu erstellen. Fügen Sie einfach einen Alias in Ihre .bashrc ein. Dies ist einfacher und sicherer als: alias dc = 'sudo docker'.
quelle
Sie können diese Schritte ausführen und dies wird für Sie funktionieren:
sudo groupadd docker
sudo usermod -aG docker $USER
groups
newgrp docker
sudo chown root:docker /var/run/docker.sock
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
Nach diesem Test können Sie ausführen
docker ps -a
quelle
chown
betrifft die Datei docker.sock.Nachdem Sie Docker installiert, die Docker-Gruppe erstellt und einen Benutzer hinzugefügt haben, bearbeiten Sie die Docker-Service-Unit-Datei:
Fügen Sie dem Abschnitt [Service] zwei Zeilen hinzu:
Speichern Sie die Datei (Strg-X, y, Eingabe)
Führen Sie den Docker-Dienst aus und aktivieren Sie ihn:
quelle
Nach der Docker-Installation unter Centos. Während ich unter dem Befehl lief, bekam ich den folgenden Fehler.
Ändern Sie die Gruppe und die Berechtigung für docker.socket
Überprüfen Sie dies mit dem folgenden Docker-Befehl
quelle
sudo chmod 666 /var/run/docker.sock
Dies hat mir geholfen, während ich Fehler bekam, mich beim Docker anzumelden. Aber jetzt funktioniert das in meinem System völlig einwandfrei.
quelle