4 Wer Docker auf AlmaLinux oder Rocky Linux installiert, stößt auf drei Dinge, die es auf Debian und Ubuntu nicht gibt: Docker listet diese Distributionen offiziell gar nicht, Podman ist schon installiert und steht im Weg, und SELinux verhindert später, dass Container auf deine Daten zugreifen – mit einer Fehlermeldung, die in die falsche Richtung zeigt. Diese Anleitung behandelt alle drei Punkte. Sie gilt für AlmaLinux 10 und 9, Rocky Linux 10 und 9, RHEL selbst sowie CentOS Stream – die Befehle sind in dieser Familie identisch. Transparenzhinweis: Diese Anleitung folgt Dockers offizieller Dokumentation für die RHEL-Familie, Stand September 2026. Anders als unsere Debian-, Ubuntu- und Arch-Anleitung konnten wir sie nicht auf einem eigenen System nachprüfen. Vorab: Was ist eigentlich aus CentOS geworden? Diese Frage steht hinter den meisten Suchanfragen zu diesem Thema, deshalb zuerst die klare Antwort. CentOS Linux ist beendet. Version 8 wurde 2021 vorzeitig eingestellt, Version 7 lief im Juni 2024 aus. Was heute „CentOS“ heißt, ist CentOS Stream – und das ist etwas anderes: Stream läuft Red Hat Enterprise Linux voraus, ist also eine Vorstufe statt eines stabilen Nachbaus. Für Entwicklung sinnvoll, für einen Server, der jahrelang unverändert laufen soll, die falsche Wahl. Die tatsächlichen Nachfolger sind: Distribution Verhältnis zu RHEL Geeignet für AlmaLinux binärkompatibler Nachbau, von einer Stiftung getragen Server, die lange stabil laufen sollen Rocky Linux binärkompatibler Nachbau, vom CentOS-Mitbegründer gestartet dasselbe – die Wahl ist Geschmackssache CentOS Stream Vorstufe von RHEL Entwicklung, Testen kommender RHEL-Versionen RHEL das Original, kostenpflichtig Unternehmen mit Supportbedarf Wenn du von CentOS 7 kommst und einen Ersatz suchst: AlmaLinux oder Rocky, beide mit Support bis weit in die 2030er. Welche von beiden, ist fast beliebig – sie sind technisch nahezu identisch. Das Wichtigste in Kürze Docker listet Alma und Rocky nicht – du nutzt das CentOS-Repository, weil die Distributionen binärkompatibel sind. Podman muss weg oder bewusst nebeneinander betrieben werden. Der Dienst startet nicht von allein – systemctl enable --now docker ist Pflicht. SELinux verlangt bei eingebundenen Verzeichnissen ein :Z – ohne das scheitern Container mit „Permission denied“. Die Firewall heißt hier firewalld, nicht ufw. Schritt 1: Podman und alte Pakete entfernen Red Hat setzt auf Podman, eine eigene Container-Lösung – die ist bei AlmaLinux und Rocky in der Server-Installation meist schon dabei. Besonders das Paket podman-docker ist ein Problem: Es legt einen Befehl namens docker an, der eigentlich Podman aufruft. Installierst du daneben das echte Docker, hast du zwei Programme, die um denselben Namen streiten. Prüfen, was vorhanden ist: rpm -qa | grep -E 'podman|docker|containerd|runc' Dann Docker-Altlasten entfernen: sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine Und, falls vorhanden, die Docker-Fassade von Podman: sudo dnf remove podman-docker Musst du Podman selbst entfernen? Nein. Podman und Docker können nebeneinander laufen – sie nutzen getrennte Verzeichnisse und Sockets. Nur podman-docker darf nicht bleiben. Wenn du Podman gar nicht nutzt, kannst du es mit sudo dnf remove podman loswerden; einige Systemwerkzeuge hängen allerdings davon ab, deshalb vorher lesen, was dnf mitentfernen würde. Schritt 2: Paketquelle einrichten Hier der Punkt, über den man Bescheid haben sollte: Docker dokumentiert AlmaLinux und Rocky nicht. Die offiziellen Anleitungen kennen CentOS Stream, Fedora und RHEL. Weil Alma und Rocky binärkompatibel zu RHEL sind, funktioniert das CentOS-Repository trotzdem – das ist der etablierte Weg, den auch die Distributionen selbst empfehlen. sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Auf neueren dnf-Versionen lautet der zweite Befehl: sudo dnf config-manager addrepo --from-repofile=https://download.docker.com/linux/centos/docker-ce.repo Meldet der erste Aufruf einen Syntaxfehler, nimm den zweiten – dnf5 hat die Aufrufweise geändert. Prüfen, ob die Quelle da ist: dnf repolist | grep docker Und weil die Repo-Datei eine Variable für die Versionsnummer enthält, lohnt ein Blick, ob sie richtig aufgelöst wird: dnf repoinfo docker-ce-stable | grep -i baseurl Dort muss eine Adresse mit deiner Hauptversion stehen, etwa .../centos/10/x86_64/stable. Erscheint stattdessen ein unaufgelöstes $releasever oder eine Version, die es bei Docker nicht gibt, hilft ein fester Wert: sudo dnf config-manager --setopt=docker-ce-stable.baseurl=https://download.docker.com/linux/centos/9/x86_64/stable --save Schritt 3: Installieren und starten sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Beim ersten Mal fragt dnf nach dem GPG-Schlüssel. Der Fingerabdruck muss lauten: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 Achtung, anderer Schlüssel: Für die RPM-Pakete nutzt Docker einen anderen Schlüssel als für Debian und Ubuntu. Wer den Debian-Fingerabdruck erwartet, wundert sich zu Recht. Und nun der Schritt, den die Debian-Familie automatisch erledigt und diese nicht: sudo systemctl enable --now docker Kontrolle: systemctl is-enabled docker # enabled systemctl is-active docker # active docker --version docker compose version Ohne diesen Befehl ist Docker installiert, aber nichts läuft – und docker ps meldet, es könne den Daemon nicht erreichen. Das ist die häufigste Verwirrung in dieser Distributionsfamilie. Schritt 4: Funktionstest und Rechte sudo docker run --rm hello-world sudo usermod -aG docker $USER Danach abmelden und neu anmelden; in der laufenden Sitzung greift die Gruppe nicht. Für ein einzelnes Terminal genügt newgrp docker. Zur Einordnung: Die Gruppe docker entspricht Root-Rechten auf dem ganzen System. Auf Servern mit mehreren Benutzern ist das eine bewusste Entscheidung, keine Formalie. SELinux: die Falle, die alle erwischt Jetzt der Abschnitt, der diesen Artikel von generischen Docker-Anleitungen unterscheidet. AlmaLinux und Rocky haben SELinux im erzwingenden Modus aktiv – anders als Debian und Ubuntu. Prüfen: getenforce Kommt Enforcing zurück, gilt das Folgende für dich. Das Symptom Du bindest ein Verzeichnis des Wirts in einen Container ein: docker run -d -v /srv/daten:/var/www/html nginx:alpine Der Container startet, aber die Anwendung darin kann die Dateien nicht lesen – Permission denied, obwohl die Rechte auf dem Wirt einwandfrei sind. Man prüft dann Besitzer und Rechte, findet nichts und dreht sich im Kreis. Die Ursache SELinux vergibt jeder Datei zusätzlich zu den normalen Rechten eine Kennzeichnung. Container dürfen nur auf Dateien mit passender Kennzeichnung zugreifen. Dein Verzeichnis /srv/daten trägt die Kennzeichnung des Wirts, nicht die für Container – also verweigert SELinux den Zugriff. Sichtbar wird das nicht in der Docker-Ausgabe, sondern im Prüfprotokoll: sudo ausearch -m AVC -ts recent Die Lösung Ein Suffix an der Volume-Angabe lässt Docker die Kennzeichnung setzen: docker run -d -v /srv/daten:/var/www/html:Z nginx:alpine In der Compose-Datei genauso: services: web: image: nginx:alpine volumes: - /srv/daten:/var/www/html:Z ports: - "127.0.0.1:8080:80" Der Unterschied zwischen den beiden möglichen Suffixen: Suffix Wirkung Wann :Z Kennzeichnung privat für diesen einen Container Standardfall – nur ein Container nutzt das Verzeichnis :z Kennzeichnung geteilt zwischen Containern Mehrere Container greifen auf dasselbe Verzeichnis zu Eine ernste Warnung: Setze :Z niemals auf Systemverzeichnisse wie /, /usr, /etc oder /home. Docker ändert dabei die Kennzeichnung aller darin liegenden Dateien – bei einem Systemverzeichnis machst du damit das Betriebssystem unbrauchbar. Nur eigene Datenverzeichnisse. Und was du nicht tun solltest: SELinux abschalten. Man liest das oft als „Lösung“, und es funktioniert – man wirft dabei aber eine Schutzschicht weg, die einer der Gründe ist, warum man diese Distributionen auf Servern einsetzt. Das Suffix kostet drei Zeichen. firewalld und Container-Ports In dieser Familie heißt die Firewall firewalld. Der Grundsatz bleibt aber derselbe wie überall: Veröffentlichte Container-Ports umgehen sie. Docker schreibt seine Weiterleitungsregeln vor die der Firewall, also wird ein Dienst mit "8080:80" im Netz erreichbar, auch wenn firewalld den Port nicht freigibt. Zustand prüfen: sudo firewall-cmd --state sudo firewall-cmd --list-all sudo firewall-cmd --get-zone-of-interface=docker0 Die wirksame Absicherung ist dieselbe wie auf allen Systemen – eine Adresse vor dem Port: ports: - "127.0.0.1:8080:80" Damit horcht der Dienst nur lokal, und du stellst einen Reverse Proxy davor, wenn er ins Netz soll. Wer veröffentlichte Ports behalten will, setzt Regeln in der Kette DOCKER-USER; ausführlich mit Nachweis steht das in unserer Ubuntu-Anleitung. Wichtige Dateien und Verzeichnisse Pfad Bedeutung /var/lib/docker Abbilder, Container, Volumes /etc/docker/daemon.json Konfiguration; existiert standardmäßig nicht /etc/yum.repos.d/docker-ce.repo Die Paketquelle aus Schritt 2 /var/run/docker.sock Der Socket zwischen Befehl und Dienst Bei RHEL-Systemen liegt /var häufig in einer eigenen, knapp bemessenen LVM-Partition. Prüfe vor dem ersten größeren Einsatz mit df -h /var/lib/docker, ob genug Platz da ist – Abbilder summieren sich schnell auf mehrere Gigabyte. Hardware für den RHEL-kompatiblen ServerAlmaLinux und Rocky landen meist auf Systemen, die jahrelang durchlaufen sollen – da lohnt ordentlicher Speicher.Mini-PC mit Intel N100Auf Amazon ansehenNVMe-SSD 1 TBAuf Amazon ansehenArbeitsspeicher DDR5 32 GB mit ECCAuf Amazon ansehenUSV für den ServerAuf Amazon ansehen* Affiliate-Links: Als Amazon-Partner verdienen wir an qualifizierten Käufen. Bitte prüfe die Kompatibilität mit deinem System. Häufige Fragen Soll ich nicht einfach Podman nehmen? Ein fairer Gedanke. Podman ist in dieser Familie zu Hause, läuft ohne dauerhaften Dienst und ohne Root-Rechte – sicherheitstechnisch die sauberere Lösung. Der Grund für Docker ist das Umfeld: Nahezu jede Anleitung, jede compose.yaml und jedes Projekt im Netz geht von Docker aus. Podman kann das meiste davon nachbilden, aber nicht alles reibungslos. Wenn du Fertigrezepte aus dem Netz nutzen willst, ist Docker der Weg des geringeren Widerstands. Gilt die Anleitung auch für CentOS Stream? Ja, die Befehle sind identisch – Stream ist ja das von Docker offiziell dokumentierte System. Überlege nur, ob Stream für deinen Zweck das Richtige ist; für einen stabilen Server sind Alma oder Rocky die bessere Wahl. Und für Fedora? Fast. Fedora hat ein eigenes Docker-Repository (/linux/fedora/docker-ce.repo) statt des CentOS-Pfads. Der Rest, inklusive SELinux-Suffix und systemctl enable --now, ist gleich. docker ps meldet, der Daemon sei nicht erreichbar. Fast immer fehlt sudo systemctl enable --now docker. In dieser Familie startet kein Paket seinen Dienst von selbst. Mein Container kommt nicht an die eingebundenen Dateien. SELinux. Ergänze :Z an der Volume-Angabe – siehe den Abschnitt oben. Wie aktualisiere ich Docker? sudo dnf upgrade holt neue Versionen über die eingerichtete Quelle. Laufende Container werden beim Neustart des Dienstes kurz unterbrochen; mit restart: unless-stopped kommen sie von allein zurück. Wie entferne ich Docker vollständig? sudo systemctl disable --now docker sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo rm -rf /var/lib/docker /var/lib/containerd Der letzte Befehl löscht alle Abbilder, Container und Volumes unwiderruflich. Fazit Die Installation selbst ist kurz: Paketquelle hinzufügen, fünf Pakete installieren, Dienst aktivieren. Was diese Distributionsfamilie eigen macht, sind die drei Dinge davor und danach – Podmans Docker-Fassade entfernen, den Dienst von Hand starten und SELinux mit :Z bedienen. Besonders der letzte Punkt kostet Zeit, wenn man ihn nicht kennt: Eine Fehlermeldung über fehlende Rechte, obwohl die Rechte stimmen, führt zuverlässig in die falsche Richtung. Wer einmal weiß, dass drei Zeichen an der Volume-Angabe fehlen, verliert dort keinen Abend mehr. Alle Anleitungen im Überblick: Docker auf jedem System installieren. Vorheriger Beitrag BENNING VT 2 im Test: berührungsloser Spannungsprüfer mit Magnetfeld Nächster Beitrag STEVIAGO Stevia Pulver und Tabs im Test: Dosierung, Kosten und Geschmack You may also like Docker auf Arch Linux installieren: Zwei Befehle, einer wird vergessen September 24, 2026 Docker auf dem Raspberry Pi installieren: 32 oder 64 Bit? September 23, 2026 Docker auf Ubuntu installieren – und die Firewall-Falle vermeiden September 22, 2026 Docker auf Debian 13 installieren: Die vollständige Anleitung September 21, 2026 Linux für Anfänger: Der ehrliche Einstieg September 20, 2026 Linux-Befehle: Die wichtigsten Kommandos für den Alltag September 19, 2026 Hinterlasse einen Kommentar Cancel Reply Save my name, email, and website in this browser for the next time I comment.