Docker auf Rocky Linux und AlmaLinux installieren
Installieren Sie Docker Engine mit dnf und beheben Sie typische EL-Probleme: Podman belegt docker, SELinux blockiert Bind-Mounts und Firewalld täuscht.
Docker auf Rocky Linux und AlmaLinux installieren
Um Docker auf Rocky Linux oder AlmaLinux zu installieren, fügen Sie das eigene dnf-Repository von Docker hinzu, installieren die Engine mit dem Compose-Plugin und aktivieren anschließend den Dienst. Dafür sind vier Befehle erforderlich. Das Vorgehen ist auf beiden Distributionen identisch, weil beide Neubauten von Red Hat Enterprise Linux (RHEL) sind und dasselbe Paketlayout verwenden. CentOS Stream funktioniert auf die gleiche Weise.
Die Installation ist kurz. Der größte Teil dieser Anleitung behandelt daher die Unterschiede von Enterprise Linux (EL) gegenüber Ubuntu. Podman belegt auf Ihrem Image möglicherweise bereits den Befehl docker. SELinux blockiert Dateien aus Bind-Mounts, bis sie das richtige Label tragen. Firewalld filtert die von Docker veröffentlichten Ports nicht. Daher kann ein Container-Port aus dem Internet erreichbar sein, während firewall-cmd meldet, dass kein Port geöffnet ist.
Verwenden Sie nicht das Komfortskript von Docker aus get.docker.com. Die Dokumentation von Docker weist darauf hin, dass es für den Produktionseinsatz nicht empfohlen wird. Das Skript schreibt Ihre Repository-Konfiguration ohne Rückfrage um und kann nicht sicher erneut ausgeführt werden, um ein Upgrade durchzuführen. Wenn Sie das Repository manuell hinzufügen, behandelt dnf upgrade Docker wie jedes andere Paket auf dem System.
Antwortet podman bereits auf den docker-Befehl?
Rocky Linux und AlmaLinux liefern podman in ihren Standard-Repositories aus. Viele VPS-Images installieren podman automatisch. Einige Images gehen noch weiter und installieren podman-docker. Dadurch wird unter /usr/bin/docker ein Shell-Skript abgelegt, das podman aufruft. Jeder docker-Befehl, den Sie eingeben, führt dann stattdessen podman aus. Eine Anleitung für Docker erzeugt dadurch möglicherweise unerwartete Ausgaben.
Das erste Anzeichen ist ein Banner. Das /usr/bin/docker-Skript prüft, ob die Datei /etc/containers/nodocker vorhanden ist. Fehlt die Datei, gibt das Skript eine Zeile aus, bevor es einen Befehl ausführt:
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.Möglicherweise hat jemand diese Datei angelegt, um das Banner zu unterdrücken. Verlassen Sie sich daher nicht allein darauf. Fragen Sie die Paketdatenbank, welchem Paket die Binärdatei gehört:
command -v docker
rpm -qf "$(command -v docker)"Eine Antwort, die mit podman-docker beginnt, bedeutet, dass podman antwortet. Eine Antwort, die mit docker-ce-cli beginnt, bedeutet, dass Docker verwendet wird. Wenn rpm -qf meldet, dass kein Paket die Datei besitzt, wurde sie manuell installiert. Lesen Sie in diesem Fall das Skript, bevor Sie ihm vertrauen.
Podman verwendet dieselben OCI-Images und ist eine geeignete Wahl. Wenn Sie podman verwenden möchten, können Sie hier aufhören. Wenn Sie Docker Engine verwenden möchten, entfernen Sie zuerst die konfliktverursachenden Pakete. Dies ist die von Docker für RHEL dokumentierte Liste:
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runcPrüfen Sie, welche Pakete dnf zusammen mit den Konfliktpaketen entfernen möchte, bevor Sie bestätigen. Bei einem frischen VPS-Image ist die Liste kurz. Auf einem System, das bereits verwendet wurde, kann das Entfernen von podman auch cockpit-podman oder ein anderes davon abhängiges Werkzeug entfernen.
Grundsätzlich können Sie podman zusammen mit Docker betreiben. Entfernen Sie dazu nur podman-docker, damit der Name docker frei wird, sowie runc, das durch das Paket containerd.io ersetzt wird. In der Docker-Dokumentation wird podman als Konfliktpaket behandelt. Diese Konfiguration wird daher von Docker nicht unterstützt. Wenn die Installation weiterhin einen Konflikt meldet, verwenden Sie die vollständige Entfernungsliste oben.
Docker-Repository mit dnf config-manager hinzufügen
Docker veröffentlicht RPMs für Enterprise Linux unter download.docker.com. Die Repository-Datei verweist auf den CentOS-Baum. Rocky Linux und AlmaLinux lösen darüber ihre Pakete auf. Im August 2026 dokumentiert Docker dieses Repository für CentOS Stream 9 und CentOS Stream 10.
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoVersion 5 von dnf hat das Argument --add-repo entfernt. Daher schlägt der zweite Befehl bei neueren Versionen fehl. Prüfen Sie zunächst, welche Version installiert ist, und verwenden Sie dann die passende Form:
dnf --versionWenn eine Version aus dem Bereich 5.x ausgegeben wird, verwenden Sie stattdessen die Form mit dem Subcommand:
sudo dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/centos/docker-ce.repoBeide Befehle schreiben dieselbe Datei nach /etc/yum.repos.d/docker-ce.repo. Die falsche Form schlägt mit einem Fehler wegen eines unbekannten Arguments fehl. Sie führt daher nicht unbemerkt zu einer falschen Konfiguration.
Die Repository-Datei setzt baseurl auf einen Pfad, der $releasever enthält. dnf ersetzt diese Variable anhand Ihres Release-Pakets. Rocky Linux und AlmaLinux setzen sie auf die Hauptversionsnummer. Daher enthält 9 unter EL 9 und 10 unter EL 10 diesen Wert. Deshalb wird ein CentOS-Repository auf einem Rocky-System korrekt aufgelöst. Prüfen Sie die Ersetzung vor der Installation:
sudo dnf repoinfo docker-ce-stableLesen Sie die Zeile Repo-baseurl. Sie sollte mit /9/x86_64/stable oder /10/x86_64/stable enden. Wenn Ihr Release $releasever auf eine Punktversion wie 9.6 setzt, meldet dnf beim Abrufen der Metadaten für diese URL Status code: 404. Beheben Sie das Problem, indem Sie /etc/yum.repos.d/docker-ce.repo bearbeiten und $releasever durch die reine Hauptversionsnummer ersetzen.
Engine und das Compose-Plugin installieren
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginFünf Pakete, und jedes übernimmt eine Aufgabe. docker-ce ist der Daemon, dockerd. docker-ce-cli ist der Befehl docker, den Sie eingeben. containerd.io ist die Container-Laufzeit, die der Daemon steuert. docker-buildx-plugin erstellt Images. docker-compose-plugin stellt docker compose als Unterbefehl bereit.
Diese Pakete installieren keine Binärdatei namens docker-compose mit Bindestrich. Das war Compose v1, dessen Lebensdauer im Juli 2023 endete. Alles, was docker-compose mit einem Bindestrich aufruft, muss auf docker compose mit einem Leerzeichen aktualisiert werden.
Die erste Installation hält an, um den Signaturschlüssel von Docker zu importieren, und zeigt dessen Fingerabdruck an. Der Schlüssel stammt aus gpgkey=https://download.docker.com/linux/centos/gpg in der gerade hinzugefügten Repository-Datei. Vergleichen Sie daher den von dnf ausgegebenen Fingerabdruck mit dieser URL, bevor Sie den Schlüssel akzeptieren.
Ein Fehler tritt häufig genug auf, um ihn ausdrücklich zu nennen. Wenn dnf meldet, dass containerd.io container-selinux benötigt und kein Paket dies bereitstellt, ist Ihr AppStream-Repository deaktiviert. Führen Sie dnf repolist aus und prüfen Sie, ob appstream aufgeführt ist. Dort wird container-selinux unter EL 9 und EL 10 bereitgestellt.
Docker starten und den Betrieb bestätigen
sudo systemctl enable --now docker
sudo systemctl status docker --no-pager
sudo docker run --rm hello-worldDie RPM-Pakete von Docker lassen den Daemon nach der Installation gestoppt und deaktiviert. Deshalb erscheint dieser Schritt auf der Docker-CentOS-Seite, nicht aber auf der Ubuntu-Seite, auf der das deb den Dienst für Sie startet. Überspringen Sie enable, läuft Docker nur bis zum nächsten Reboot. Danach bleibt der Dienst beendet und nimmt alle Container mit.
systemctl status sollte Active: active (running) anzeigen. Der hello-world-Container sollte This message shows that your installation appears to be working correctly. ausgeben und beendet werden. Gibt er stattdessen einen Berechtigungsfehler für /var/run/docker.sock aus, fehlt sudo. Das wird im folgenden Abschnitt zur docker-Gruppe behoben.
Prüfen Sie das Compose-Plugin separat, weil es ein eigenes Paket ist und fehlen kann, während die Engine ordnungsgemäß läuft:
docker compose versionEine erfolgreiche Ausgabe sieht wie Docker Compose version v2.x.x aus. Das Wiederherstellen Ihrer Dienste nach einem Reboot ist eine andere Frage als das Aktivieren des Daemons. Restart-Richtlinien bestimmen, ob Compose-Dienste beim Booten wieder gestartet werden.
Warum führt ein Bind-Mount zu „Permission denied“?
Rocky Linux und AlmaLinux führen SELinux (Security-Enhanced Linux) standardmäßig im Enforcing-Modus aus. Bestätigen Sie dies mit getenforce. Der Befehl gibt Enforcing aus.
Docker-Container laufen unter dem SELinux-Typ container_t. Dieser Typ darf nur Dateien lesen und schreiben, die mit container_file_t gekennzeichnet sind. Ein Verzeichnis, das Sie auf dem Host erstellt haben, übernimmt die Kennzeichnung seines übergeordneten Pfads. Diese ist nicht container_file_t. Der Zugriff auf den Container wird verweigert, obwohl Eigentümer, Gruppe und Berechtigungen auf dem Host korrekt aussehen. Mit drei Befehlen können Sie das reproduzieren:
sudo mkdir -p /srv/site
echo hello | sudo tee /srv/site/index.html
sudo docker run --rm -v /srv/site:/usr/share/nginx/html:ro nginx:alpine cat /usr/share/nginx/html/index.htmlDer Container gibt Folgendes aus:
cat: can't open '/usr/share/nginx/html/index.html': Permission deniedZwei Befehle zeigen die Ursache. ls -ldZ /srv/site gibt die Kennzeichnung aus. Für einen Pfad unter /srv lautet sie system_u:object_r:var_t:s0 und nicht container_file_t. Anschließend gibt sudo ausearch -m avc -ts recent den Audit-Datensatz des Kernels aus. Dieser enthält avc: denied { read }, ein scontext=-Feld mit dem Namen container_t sowie ein tcontext=-Feld mit der Kennzeichnung, die Sie gerade für das Verzeichnis gesehen haben. Die Abweichung zwischen diesen beiden Feldern erklärt das gesamte Problem.
Die Lösung ist ein Suffix am Volume-Argument. Docker ändert die Kennzeichnung des Pfads automatisch:
sudo docker run --rm -v /srv/site:/usr/share/nginx/html:ro,z nginx:alpine cat /usr/share/nginx/html/index.html:z in Kleinbuchstaben kennzeichnet den Inhalt als gemeinsam genutzt, sodass mehrere Container dasselbe Verzeichnis verwenden können. :Z in Großbuchstaben kennzeichnet den Inhalt als privat und nicht gemeinsam genutzt. Er ist dann an einen Container gebunden, und ein zweiter Container erhält beim Lesen desselben Pfads eine Zugriffsverweigerung. Verwenden Sie :z für Verzeichnisse, auf die auch ein Sidecar- oder Backup-Container zugreift. Verwenden Sie :Z für ein Datenbankverzeichnis, das einem einzigen Container gehört.
Die Docker-Dokumentation enthält hierzu eine wichtige Warnung, die wiederholt werden sollte, weil die Kennzeichnung rekursiv erfolgt. Ein Bind-Mount eines Systemverzeichnisses wie /home oder /usr mit :Z „macht Ihre Hostmaschine unbrauchbar, und Sie müssen die Dateien auf der Hostmaschine möglicherweise manuell neu kennzeichnen“. Verwenden Sie diese Suffixe nur für Verzeichnisse, die Sie für den Container erstellt haben, und niemals für einen Systempfad.
In Compose wird das Suffix an dieselbe Zeichenfolge angehängt:
services:
web:
image: nginx:alpine
volumes:
- /srv/site:/usr/share/nginx/html:ro,zZwei Einschränkungen führen leicht zu Problemen. Das Flag --mount kann keine SELinux-Kennzeichnung setzen. Verwenden Sie daher -v, wenn Sie eine Kennzeichnung benötigen. Für benannte Volumes ist kein Suffix erforderlich, weil Docker die von ihm unter /var/lib/docker/volumes erstellten Verzeichnisse selbst kennzeichnet.
Deaktivieren Sie SELinux nicht. Verwenden Sie sudo setenforce 0 nur für einen Test von einer Minute. Wenn der Container dann funktioniert, liegt das Problem an einer Kennzeichnung, und :z ist die Lösung. Aktivieren Sie SELinux sofort wieder mit sudo setenforce 1. Unter Enterprise Linux kann permission denied bei einem Bind-Mount zwei getrennte Ursachen haben, die im Container identisch aussehen. Eine Ursache ist die SELinux-Kennzeichnung. Die andere ist der gewöhnliche numerische Eigentümer und die numerische Gruppe. Genau dafür gibt es die Variablen PUID und PGID. ls -lnZ zeigt Berechtigungsmodus, numerischen Eigentümer und Kennzeichnung in einer Zeile an. So können Sie feststellen, welche Ursache vorliegt.
Warum ist ein veröffentlichter Port erreichbar, obwohl firewalld geschlossen wirkt?
Firewalld ist die Standard-Firewall unter Rocky Linux und AlmaLinux. Prüfen Sie mit sudo systemctl is-active firewalld, ob sie läuft. Veröffentlichen Sie nun einen Port und prüfen Sie, welche Ports firewalld als offen betrachtet:
sudo docker run -d --name web -p 8080:80 nginx:alpine
sudo firewall-cmd --list-portsfirewall-cmd gibt eine leere Zeile aus. Von einem anderen Rechner liefert curl -I http://YOUR_SERVER_IP:8080/ den Wert HTTP/1.1 200 OK zurück. Der Port ist aus dem Internet erreichbar, und Ihre Firewall meldet nichts.
Die Ursache ist der Pfad, den das Paket nimmt. Die Zonenregeln von firewalld filtern Datenverkehr, der an den Host selbst adressiert ist. Ein veröffentlichter Port ist nicht an den Host adressiert: Docker installiert eine Destination-NAT-Regel (Network Address Translation), die das Ziel auf die Adresse des Containers umschreibt, bevor das Paket den lokalen Input-Pfad des Hosts erreicht. Der Kernel leitet das Paket deshalb weiter, statt es lokal zuzustellen. Docker ordnet seine Bridge-Schnittstellen anschließend einer firewalld-Zone namens docker zu, deren Ziel ACCEPT ist, und fügt eine Weiterleitungsrichtlinie namens docker-forwarding hinzu, die die Weiterleitung aus jeder Zone in die Zone docker erlaubt. Ihre Zonenregeln sehen das Paket nie.
Die sauberste Lösung benötigt keine Firewall-Regel. Binden Sie die Host-Seite der Veröffentlichung an das Loopback-Interface und setzen Sie einen Reverse Proxy davor:
sudo docker rm -f web
sudo docker run -d --name web -p 127.0.0.1:8080:80 nginx:alpine
curl -I http://127.0.0.1:8080/Der lokale Aufruf von curl liefert HTTP/1.1 200 OK zurück. Derselbe Aufruf von einem anderen Rechner stellt keine Verbindung mehr her. Wenn im Argument -p keine Host-Adresse angegeben ist, wird der Port auf jeder Schnittstelle veröffentlicht. Betrachten Sie daher ein einzelnes -p 8080:80 als bewusste Entscheidung, den Dienst öffentlich bereitzustellen.
Wenn ein Dienst von bestimmten Adressen erreichbar sein soll, von anderen jedoch nicht, stellt Docker eine eigene Chain bereit. DOCKER-USER wird vor den Accept-Regeln von Docker verarbeitet. Eine dort eingetragene Regel bleibt deshalb erhalten, wenn Docker neu gestartet wird und seine Chains neu schreibt:
sudo iptables -I DOCKER-USER -i enp1s0 ! -s 203.0.113.10 -j DROP
sudo iptables -S DOCKER-USERÜbernehmen Sie den Namen der Schnittstelle aus ip route show default, statt eth0 vorauszusetzen. Aktuelle EL-Images verwenden Namen wie enp1s0 oder ens3. Unter Rocky und AlmaLinux ist der Befehl iptables eine Kompatibilitätsschicht über nftables. Die Chains von Docker sind darüber sichtbar. Regeln, die auf diese Weise hinzugefügt werden, gehen nach einem Reboot verloren, wenn Sie sie nicht speichern. Schreiben Sie sie daher in eine systemd-Unit, sobald sie sich bewährt haben.
Docker Engine 28.0, veröffentlicht im Jahr 2025, hat eine benachbarte Sicherheitslücke geschlossen: Der direkte geroutete Zugriff auf Container-Ports, die nie veröffentlicht wurden, ist jetzt in der Chain DOCKER blockiert. Diese Änderung betrifft keine veröffentlichten Ports. Daher gelten die obigen Ausführungen auch für aktuelle Versionen. Gewöhnen Sie sich an einen Ablauf: Testen Sie einen veröffentlichten Port nach jedem sudo firewall-cmd --reload erneut. Wenn er nicht mehr antwortet, installiert sudo systemctl restart docker die Docker-Regeln erneut.
Administratoren unter Ubuntu stoßen über ein anderes Tool auf dasselbe Problem. Dort geht es um warum veröffentlichte Docker-Ports ufw-Regeln ignorieren. In beiden Fällen ist der NAT-Pfad die Ursache. Nur die davorliegende Firewall ist eine andere.
Einen Nicht-root-Benutzer zur docker-Gruppe hinzufügen
sudo vor jedem docker-Befehl einzugeben, wird schnell lästig. Die docker-Gruppe macht das überflüssig:
sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-worldusermod -aG bearbeitet /etc/group. Ihre aktuelle Shell hat jedoch bereits ihre Gruppenliste geladen. Die Änderung wird daher erst wirksam, wenn Sie eine neue Shell starten. newgrp docker startet eine Shell mit der zusätzlichen Gruppe, sodass Sie die Änderung sofort testen können. Neue SSH-Sitzungen übernehmen die Gruppe automatisch.
Machen Sie sich klar, welche Berechtigungen diese Gruppe gewährt. Die Mitgliedschaft ermöglicht Schreibzugriff auf /var/run/docker.sock. Jeder Prozess, der mit diesem Socket kommunizieren kann, kann den Docker-Daemon auffordern, einen Container zu starten, der das Host-Dateisystem einbindet. Ein Befehl zeigt, was das bedeutet:
docker run --rm -v /:/host alpine wc -l /host/etc/shadowDamit wird eine Datei gelesen, auf die nur root zugreifen kann, und zwar über ein Konto ohne sudo-Berechtigungen. Auch die Docker-Dokumentation zur Einrichtung nach der Installation weist darauf hin: Die docker-Gruppe gewährt Berechtigungen, die root gleichwertig sind. Fügen Sie ein Konto nur dann hinzu, wenn Sie diesem Konto auch sudo geben würden. Wenn Sie Konten auf einem neuen Server einrichten, legen Sie dies gemeinsam mit der restlichen Einrichtung von Benutzern mit geringsten Berechtigungen auf einem VPS fest und nicht erst nachträglich.
Docker bietet außerdem einen Rootless-Modus, in dem der Daemon als nicht privilegierter Benutzer ausgeführt wird. Dabei handelt es sich um einen separaten Installationsweg. Außerdem ändert sich dadurch das Verhalten der Storage-Treiber und von Ports unter 1024. Planen Sie diesen Modus daher als eigenes Projekt und nicht als Option, die Sie später ergänzen.
Wohin als Nächstes
Sie haben jetzt die Engine, das Compose-Plugin, einen Dienst, der einen Reboot übersteht, und die drei oben dokumentierten EL-spezifischen Verhaltensweisen. Der nächste Schritt ist ein compose.yaml pro Dienst. Der Aufbau einer Compose-Datei behandelt das Dateiformat und die zugehörigen Befehle. Wenn dies Ihr erster Container-Host ist, behandelt Docker auf einem VPS ausführen die Fragen zu Dimensionierung, Speicher und Image-Hygiene, die dieser Leitfaden auslässt.
FAQ
Funktioniert das Docker-CentOS-Repository unter Rocky Linux und AlmaLinux?
Ja. Fügen Sie https://download.docker.com/linux/centos/docker-ce.repo mit dnf config-manager hinzu. Der baseurl in dieser Datei enthält $releasever. Rocky Linux und AlmaLinux ersetzen die Variable durch die Hauptversionsnummer. Ein EL-9-System löst sie daher zum CentOS-9-Baum auf, ein EL-10-System zum CentOS-10-Baum. Prüfen Sie die Auflösung mit sudo dnf repoinfo docker-ce-stable und lesen Sie die Zeile Repo-baseurl. Ein Status code: 404 beim Abruf der Metadaten durch dnf bedeutet, dass die Variable zu einer Punktversion aufgelöst wurde. Wenn Sie /etc/yum.repos.d/docker-ce.repo auf die reine Hauptversionsnummer ändern, ist das Problem behoben.
Können Docker und podman auf demselben Server installiert werden?
Die Docker-Dokumentation führt podman und runc als inkompatible Pakete auf und weist an, beide vor der Installation von Docker Engine zu entfernen. Der konkrete Konflikt betrifft das Paket podman-docker. Es stellt /usr/bin/docker bereit und wandelt jeden docker-Befehl in einen podman-Befehl um. Führen Sie rpm -qf "$(command -v docker)" aus, um zu sehen, welches Paket diesen Pfad bereitstellt. Beginnt die Ausgabe mit podman-docker, antwortet podman. Der gleichzeitige Betrieb beider Engines wird von Docker nicht unterstützt. Wählen Sie auf einem relevanten Server daher eine der beiden Engines aus.
Warum erhält mein Container bei einem Bind-Mount die Fehlermeldung „permission denied“?
SELinux ist unter Rocky Linux und AlmaLinux standardmäßig im Enforcing-Modus aktiv. Container laufen unter dem Typ container_t und dürfen nur auf Dateien mit der Kennzeichnung container_file_t zugreifen. Ein von Ihnen erstelltes Verzeichnis hat daher möglicherweise die falsche Kennzeichnung. Der Zugriff wird unabhängig von Eigentümer und Modus verweigert. Prüfen Sie die Kennzeichnung mit ls -ldZ für den Host-Pfad und mit sudo ausearch -m avc -ts recent. Dieser Befehl gibt avc: denied mit den beiden nicht übereinstimmenden Kontexten aus. Fügen Sie :z zum Volume-Argument für Inhalte hinzu, die zwischen Containern gemeinsam genutzt werden. Verwenden Sie :Z für Inhalte, die nur für einen Container bestimmt sind. Zeigen Sie :Z niemals auf /home oder /usr. Die rekursive Umkennzeichnung würde den Host beschädigen.
Muss ich in firewalld einen Port öffnen, um einen Container-Port zu veröffentlichen?
Nein. Genau das ist das Problem. Die NAT-Regel von Docker schreibt die Zieladresse um, bevor das Paket den Input-Pfad des Hosts erreicht. Die Zonenregeln von firewalld prüfen das Paket daher nicht. Docker ordnet seine Bridges außerdem einer firewalld-Zone namens docker mit dem Ziel ACCEPT zu. Ein mit -p 8080:80 gestarteter Container ist aus dem Internet erreichbar, während sudo firewall-cmd --list-ports keine Ausgabe erzeugt. Verwenden Sie -p 127.0.0.1:8080:80, wenn der Dienst nur vom Host aus erreichbar sein soll. Alternativ können Sie Filterregeln in die Kette DOCKER-USER einfügen. Docker verarbeitet diese Kette vor seinen eigenen Accept-Regeln.
Ist es sicher, meinen Benutzer zur docker-Gruppe hinzuzufügen?
Dadurch erhält der Benutzer Root-Rechte. Ein Mitglied der docker-Gruppe kann in /var/run/docker.sock schreiben. Anschließend kann docker run --rm -v /:/host alpine wc -l /host/etc/shadow eine Datei lesen, auf die nur root zugreifen darf, und zwar über ein Konto ohne sudo-Rechte. Die Dokumentation zur Docker-Nachinstallation beschreibt dieselbe Gleichwertigkeit. Fügen Sie nur Konten hinzu, denen Sie bereits sudo anvertrauen würden. Verwenden Sie für gemeinsam genutzte Konten oder Dienstkonten weiterhin sudo docker. Rootless mode ist die Alternative, wenn Container unter einem unprivilegierten Benutzer laufen müssen. Er ist ein separater Installationsweg und keine Einstellung.