Rootloser Docker

Rootloser Docker



Docker ist eines der leistungsstärksten und einflussreichsten Tools für die moderne Anwendungsentwicklung und -bereitstellung. Als Entwickler verwenden wir es auf unseren lokalen Computern, um in Sekundenschnelle Umgebungen einzurichten und zu konfigurieren, die unseren Anwendungsanforderungen entsprechen.

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:

  1. Ein Linux-basiertes System mit Root-Berechtigungen.
  2. 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-Update

Als 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 .bashrc

Fügen Sie als Nächstes die folgenden Einträge zur bashrc-Konfigurationsdatei hinzu:

Export XDG_RUNTIME_DIR = / heim / Ubuntu / .Docker / laufen

Export 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 starten

Nach 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.