GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie eine Rootless Docker-Installation durch (unter Ubuntu und Debian)

Was ist rootless Docker?

Wenn Sie Docker installieren, benötigt es normalerweise volle Berechtigungen (root) auf dem Hostsystem. Dies schafft ein potenzielles Sicherheitsproblem, da sowohl Container als auch der (Daemon-)Docker-Dienst als Root arbeiten. Bei der Rootless-Installation von Docker wird nur der Docker-Daemon als Root ausgeführt, während die Container als normale Benutzer ausgeführt werden.

Warum spielt es eine Rolle? Denn ist der in einem Container laufende Dienst kompromittiert, kann der Angreifer auch auf die Systemdateien zugreifen. Es gibt keine wirkliche Isolation der Container.

Das Open-Source-Podman-Projekt wurde erstellt, um Container hauptsächlich ohne Root auszuführen. Dies setzte Docker unter Druck, eine ähnliche Funktion zu unterstützen, sodass Container als normale Benutzer ausgeführt werden, der Docker-Dienst (Daemon) jedoch als Root arbeitet.

Diese wurzellose Installation ist jetzt von Docker selbst verfügbar und Sie müssen Podman nicht nur für diese Funktion verwenden.

In diesem Artikel werde ich erklären, wie man Docker ohne Root-Zugriff installiert. Aber bevor ich Ihnen diese Schritte zeige, wollen wir zuerst die Nachteile dieses Modus besprechen.

Nachteil der Ausführung von Docker im Rootless-Modus

Der größte Nachteil dieses Modus ist das Netzwerk, und diese Probleme sind auch in Podman vorhanden.

Standardmäßig verwendet Docker ein wurzelloses Netzwerk.

Weil es mit bis zu 30 Gbit/s am schnellsten ist und IPv4 und IPv6 unterstützt.

Aber es hat Probleme.

Container haben nicht die externe IP der Anfrage und alle Anfragen werden von 127.0.0.1 angezeigt.

Dies ist ein großes Problem, insbesondere wenn Sie einen Schutz einrichten möchten, der DDOS-Angriffe (Distributed Denial-of-Service) einschränkt, da alle Anfragen von derselben Adresse zu stammen scheinen.

Die Verwendung des Slirp4netns-Modus löst dieses Problem und zeigt die ursprüngliche Adresse der Anfrage an. Aber es hat auch zwei Probleme.

  • IPv6 wird nicht unterstützt.
  • Die Geschwindigkeit ist viel langsamer (ca. 7 Gbit/s).

Voraussetzungen

Der Rootless-Modus verwendet keine Sticky Bits. Sie brauchen newuidmap und newgidmap .

Aus diesem Grund sollten Sie sicherstellen, dass die Pakete newuidmap und newgidmap installiert sind (über das Paket uidmap) und dass es 65.536 untergeordnete IDs gibt.

newuidmap überprüft, ob der Aufrufer der Eigentümer des Prozesses ist, der durch pid angegeben wird .

id -u
1001
whoami
testuser

Überprüfen Sie als Nächstes, ob der Benutzer 65.536 Unter-UIDs hat:

grep ^$(whoami): /etc/subuid
testuser:231072:65536
grep ^$(whoami): /etc/subgid
testuser:231072:65536

Was bedeuten diese Zahlen? Die erste Zahl ist die erste ID, die verwendet werden darf, und die nächste gibt an, wie viele IDs Sie haben. Zum Beispiel beginnt es mit 231072, ID 0 bedeutet 231072 und ID 1000 bedeutet 241072.

Installieren Sie die dbus-user-session und Sicherungsüberlagerungen Pakete.

Verwenden Sie für Debian den Befehl zum Installieren von dbus-user-session:

sudo apt install -y dbus-user-session

Und installieren Sie dann fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Es wird empfohlen, Kernel 5.11 oder höher zu verwenden.

Installation von Docker im Rootless-Modus

Jetzt kommen Sie zum Hauptteil. Der erste Teil ist die normale Docker-Installation und dann der Rootless-Teil.

Ich zeige die Schritte für Ubuntu.

Installieren Sie die üblichen Docker-Pakete

Deinstallieren Sie zuerst alle vorhandenen Docker-Pakete:

 sudo apt remove docker docker-engine docker.io containerd runc

Und dann Docker auf Ubuntu installieren:

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io

Vergewissern Sie sich, dass Docker Engine korrekt installiert ist, indem Sie das hello-world-Image ausführen.

sudo docker run hello-world

Da der Docker-Daemon bereits läuft, deaktivieren Sie ihn zuerst.

sudo systemctl disable --now docker.service docker.socket

Installieren Sie das Rootless-Paket

Installieren Sie nun das Paket docker-ce-rootless-extras, indem Sie das offizielle Skript mit dem Curl-Befehl herunterladen:

curl -fsSL https://get.docker.com/rootless | sh

Folgen Sie den Vorschlägen auf dem Bildschirm und Sie haben Docker ohne Root installiert.

Am Ende dieses Installationsbildschirms werden zwei Dinge geschrieben:export=xxx

Kopieren Sie sie und fügen Sie sie in die letzte .bashrc-Datei oder, wenn Sie ZSH verwenden, die .zshrc-Datei ein. Geben Sie die soeben geänderten rc-Dateien ein.

Führen Sie nach Abschluss der Installation den Daemon Docker rootless aus:

 systemctl --user start docker

Rootless Docker automatisch bei jedem Start ausführen:

systemctl --user enable docker
sudo loginctl enable-linger $(whoami)

Genießen Sie es.

Autoreninfo:Mead Naji ist Webentwickler und Linux-Entwickler der alten Schule.


Docker
  1. So installieren und verwenden Sie Docker unter Ubuntu 20.04

  2. So installieren Sie Docker unter Debian / Ubuntu

  3. So installieren und verwenden Sie Docker in Ubuntu 20.04

  4. So installieren und konfigurieren Sie Docker unter Debian 11

  5. So installieren Sie Docker und führen Docker-Container in Ubuntu aus

So installieren und verwenden Sie Docker Compose unter Ubuntu 20.04

So installieren und verwenden Sie Docker Compose unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So installieren Sie Docker Compose auf Ubuntu

So installieren und verwenden Sie Docker unter Ubuntu 20.04

So installieren Sie Grafana auf Ubuntu 18.04 und Debian 8