Auf den Dokumentationsseiten von Docker werden alle Beispielbefehle ohne Folgendes angezeigt sudo
:
docker ps
Unter Ubuntu wird die Binärdatei aufgerufen docker.io
. Ohne sudo geht es auch nicht:
sudo docker.io ps
Wie kann ich Docker so konfigurieren, dass ich nicht jedem Docker-Befehl sudo voranstellen muss?
apt-cache policy docker-engine
(Die entsprechende URL sollte von dockerproject.org stammen.)Antworten:
Gute Nachricht: Der neue Docker (Version 19.03 (derzeit experimentell)) kann ohne Root-Zugriff ausgeführt werden, um die Probleme zu beseitigen, die bei der Verwendung eines Root-Benutzers auftreten können. Keine Probleme mehr mit erhöhten Berechtigungen, Root-Rechten und allem, was Ihren Computer öffnen könnte, wenn Sie es nicht wollten.
Video dazu aus [DockerCon 2019] Docker-Daemon mit Rootless-Modus härten
Ab Docker 19.3 ist dies veraltet (und gefährlicher als nötig):
Im Docker-Handbuch heißt es dazu:
Wichtig zu lesen: Schritte nach der Installation für Linux (enthält auch Links zu den Details zu Docker Daemon Attack Surface ).
Fügen Sie die Andockgruppe hinzu, falls sie noch nicht vorhanden ist:
Fügen Sie den verbundenen Benutzer "$ USER" zur Docker-Gruppe hinzu. Ändern Sie den Benutzernamen so, dass er Ihrem bevorzugten Benutzer entspricht, wenn Sie Ihren aktuellen Benutzer nicht verwenden möchten:
Führen Sie entweder eine
newgrp docker
oder eine Abmeldung / Anmeldung aus, um die Änderungen an Gruppen zu aktivieren.Sie können verwenden
um zu überprüfen, ob Sie docker ohne sudo ausführen können.
quelle
newgrp docker
hat bei mir nicht funktioniert, ich musste mich ausloggen.docker login
, stellen Sie möglicherweise fest, dass der.docker
Ordner, der in Ihrem Basisordner erstellt wurde, zu gehörtroot
. so würde diese Warnung in denen Docker Befehle ausführen:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Ich habe meine Benutzer-.docker
Ordner zugänglich , ohne sudo wie folgt:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
. daschgrp
schien aber nicht zu helfen, also sollte ich den chown step wohl nur weiterempfehlen.Um den Docker-Befehl ohne auszuführen
sudo
, müssen Sie Ihren Benutzer (der über Root-Berechtigungen verfügt) zur Docker-Gruppe hinzufügen. Führen Sie dazu folgenden Befehl aus:Jetzt muss sich der Benutzer abmelden und erneut anmelden. Diese Lösung wird hier anhand des richtigen Installationsprozesses ausführlich erläutert .
quelle
Der Mechanismus, durch den das Hinzufügen eines Benutzers zur Gruppe
docker
die Berechtigung zum Ausführen von Docker erteilt, besteht darin, auf den Socket von Docker unter zuzugreifen/var/run/docker.sock
. Wenn das darin enthaltene Dateisystem/var/run
mit aktivierten ACLs bereitgestellt wurde, kann dies auch über ACLs erfolgen.Ich beziehe dies nur der Vollständigkeit halber ein.
Im Allgemeinen empfehle ich, ACLs zu vermeiden, wenn eine gute Alternative basierend auf Gruppen verfügbar ist: Es ist besser, wenn die Berechtigungen in einem System nur anhand von Gruppenmitgliedschaften verstanden werden können. Das Dateisystem nach ACL-Einträgen durchsuchen zu müssen, um die Systemberechtigungen zu verstehen, ist eine zusätzliche Belastung für Sicherheitsüberprüfungen.
Warnung 1 : Dies
root
entspricht dem Hinzufügenusername
zurdocker
Gruppe. Sie können einen Container weiterhin so starten, dass erroot
Zugriff auf das Host-Dateisystem hat.Warnung 2 : ACLs sind für Sicherheitsüberprüfungen wesentlich schwieriger als gruppenbasierte Sicherheit. Vermeiden Sie wahrscheinlich nach Möglichkeit ACLs, wenn Sie stattdessen Gruppen verwenden können, zumindest in auditrelevanten Umgebungen.
quelle