Bei der Arbeit in Docker kann es jedoch vorkommen, dass wir Docker-Ressourcen erstellen und verwenden müssen, aber keinen Root-Zugriff haben.
Oder vielleicht möchten Sie mehreren Benutzern auf einem bestimmten System erlauben, auf Docker zuzugreifen und es zu verwenden, ohne allen Benutzern die Root-Berechtigung zu erteilen.
In diesem Tutorial erfahren wir etwas über Rootless Docker, was es bedeutet, wie es funktioniert und wie wir es verwenden können, um Benutzern ohne Root-Zugriff die Nutzung von Docker und den damit verbundenen Diensten zu ermöglichen.
Was ist ein Rootless Docker?
Sobald Sie Docker installieren, benötigen der Docker-Daemon und seine Tools standardmäßig Root-Rechte auf dem Hostsystem. Dies kann zu einem erheblichen Sicherheitsrisiko führen, wenn Docker kompromittiert wird, wodurch der Angreifer Root-Zugriff erhalten kann.
Rootless Docker ist eine Funktion, die es uns ermöglicht, den Docker-Daemon und die zugehörigen Container ohne Root-Berechtigungen zu verwenden und auszuführen.
Wie es funktioniert
Obwohl es schwierig sein kann, in die technische Funktionsweise einer Rootless-Docker-Umgebung einzutauchen, finden Sie im Folgenden einen allgemeinen Überblick, der erklärt, was ein Rootless-Docker tut und wie er unter der Haube funktioniert.
Benutzernamensräume – Eine der wichtigsten Funktionen, die ein Rootless-Docker nutzt, sind Benutzernamensräume. Diese grundlegende Funktion des Linux-Kernels ermöglicht es Prozessen, innerhalb des Namespace unterschiedliche Benutzer- und Gruppen-IDs zu haben als außerhalb. Das bedeutet, dass ein Prozess innerhalb seines Namensraums als Root-Benutzer ausgeführt werden kann, außerhalb jedoch als normaler Benutzer.
Vernetzung – Die nächste Funktion von Rootless Docker ist die Vernetzung. Standardmäßig verlässt sich der normale Docker-Daemon auf Netzwerk-Stacks wie iptables und Bridges, die Root-Berechtigungen erfordern.
Docker nutzt Funktionen wie slirp4netns, das einen TCP/IP-Stack im Benutzermodus in einem Rootless-Docker bereitstellt. Dadurch kann Docker ohne Root-Berechtigung auf dem Hostsystem auf das Netzwerk zugreifen.
Lagerung – Der nächste wesentliche Teil eines Rootless-Dockers ist der Speichertreiber. Standardmäßig verwendet Docker einen Overlay2-Speichertreiber, der, wie Sie sich vorstellen können, Root-Berechtigungen erfordert. Stattdessen verwendet eine Rootless-Docker-Instanz den Fuse-Overlayfs-Treiber. Dieser Treiber basiert auf dem FUSE-Overlay-FS, wodurch wir ihn ohne Root-Berechtigungen mounten können.
Das Obige sind einige der wesentlichen Komponenten einer Rootless-Docker-Instanz. Denken Sie daran, dass hier nicht die vollständige Funktionsweise eines Rootless-Dockers untersucht wird. Sehen Sie sich die Dokumentation an, um mehr zu erfahren.
Rootless Docker – Anforderungen
Lassen Sie uns von der Theorie abweichen und lernen, wie Sie eine Rootless-Docker-Umgebung erstellen und konfigurieren.
Um diesem Beitrag folgen zu können, stellen Sie sicher, dass Sie über Folgendes verfügen:
- Ein Linux-basiertes System mit Root-Berechtigungen.
- Netzwerkzugang.
Konfigurieren des Systems mit UIDMap
Bevor wir Docker installieren und konfigurieren, müssen wir das System mit dem Dienstprogramm uidmap installieren und konfigurieren.
Mit UIDMap können wir UID- und GUI-Zuordnungen der Prozesse in einem Linux-System im Inhalt von Benutzernamensräumen verwalten. Erinnern Sie sich, als wir erwähnten, dass Rootless Docker Benutzernamensräume nutzt? Mit diesem Tool können wir die UID- und GID-Zuordnungen und die entsprechenden Namespaces angeben.
Beginnen Sie mit der Aktualisierung der Systempakete wie folgt:
$ Sudo apt-get-UpdateAls nächstes installieren Sie das Uidmap-Dienstprogramm wie gezeigt:
$ Sudo apt-get installieren uidmap -Und
Rootless Docker installieren
Der nächste Schritt besteht darin, Rootless Docker zu verarbeiten und zu installieren. Wir können dies tun, indem wir die folgenden einfachen Schritte befolgen:
Laden Sie zunächst das Rootless-Docker-Installationsskript über den unten gezeigten Link herunter:
https://get.docker.com/rootless
Sie können cURL oder WGET verwenden.
$ Locken -sSL https: // get.docker.com / wurzellos | Sch
Beachten Sie, dass Sie den obigen Befehl nicht als Root-Benutzer ausführen können.
Bearbeiten Sie nach Abschluss der Installation Ihre .bashrc-Datei mit Ihrem bevorzugten Texteditor:
$ Nano .bashrcFügen Sie als Nächstes die folgenden Einträge zur bashrc-Konfigurationsdatei hinzu:
Export XDG_RUNTIME_DIR = / heim / Ubuntu / .Docker / laufenExport WEG = / heim / Ubuntu / Behälter: $PATH
Export DOCKER_HOST =unix: /// heim / Ubuntu / .Docker / laufen / docker.sock
Stellen Sie sicher, dass Sie den Benutzer von „ubuntu“ auf den Benutzer ändern, unter dem Sie Docker installieren möchten. Die Skriptausgabe liefert Ihnen den Inhalt, den Sie der .bashrc-Datei hinzufügen können.
Speichern Sie die Änderungen und schließen Sie den Editor.
Im nächsten Schritt müssen wir den Rootless-Docker-Daemon starten. Wir können dies mit systemctl tun, wie im folgenden Befehl gezeigt:
systemctl --ubuntu Docker startenNach dem Start können Sie mit den Docker-Befehlen Docker-Container starten und konfigurieren.
Abschluss
In diesem Tutorial haben wir die Funktionalität von Rootless Docker kennengelernt, wie es funktioniert und wie wir es auf einem Linux-System konfigurieren können. Weitere Informationen finden Sie in der Rootless-Docker-Dokumentation.