Docker installieren unter Ubuntu, Debian und AlmaLinux

Linux 16 Min. Lesezeit

Docker führt die Anwendungen in Containern aus: Das Programm wird zusammen mit den für den Betrieb erforderlichen Bibliotheken in einer Image-Datei bereitgestellt, sodass es auf jedem Linux-Server auf dieselbe Weise gestartet werden kann. Ein n8n, ein Nextcloud oder eine eigene Webanwendung lässt sich somit mit wenigen Befehlen auf einem Linux-basierten KVM-VPS starten und läuft isoliert vom restlichen System.

Dieser Artikel beschreibt die Installation der Docker Engine aus dem offiziellen Docker-Repository, einschließlich der Plugins Buildx und Compose. Anschließend folgen die ersten Schritte: Testcontainer, Ausführung ohne Root-Rechte, Begrenzung der Log-Größe, der erste echte Container sowie ein wichtiger Sicherheitsaspekt: Die von Docker geöffneten Ports werden von der Firewall nicht blockiert. Wozu Docker auf einem VPS gut ist und wann sich dessen Einsatz lohnt, erfahren Sie in unserem Blogbeitrag Die Nutzung von Docker auf einem VPS.

Wir haben die Schritte im November 2026 auf den Systemen Ubuntu 26.04 und 24.04, Debian 13 sowie AlmaLinux 10.2 getestet, wobei wir die Versionen Docker 29.9.3, Compose 5.7.0 und Buildx 0.38.1 verwendet haben. Führen Sie die Befehle mit einem Benutzer aus, der über sudo-Rechte verfügt (siehe: Benutzer anlegen und sudo-Rechte vergeben).

Grundbegriffe von Docker: das aus der Registry heruntergeladene Image, die daraus gestarteten Container in einem gemeinsamen Docker-Netzwerk eines Compose-Projekts, der veröffentlichte Port und das Volume zur Speicherung der Daten

Warum aus dem eigenen Repository von Docker?

Die eigenen Pakete der Distributionen sind veraltet und enthalten nicht immer denselben Inhalt:

System Im System-Repository (November 2026) Im Docker-Repository
Ubuntu 26.04 docker.io 29.1.3, docker-compose-v2 2.40.3 Docker 29.9.3, Compose 5.7.0
Debian 13 docker.io 26.1.5, docker-compose 2.26.1 Docker 29.9.3, Compose 5.7.0
AlmaLinux 10 Es gibt kein Docker, sondern nur podman-docker Docker 29.9.3, Compose 5.7.0
  • Ubuntu und Debian: Das Paket docker.io wird von der jeweiligen Distribution bereitgestellt und nur im Rahmen ihres eigenen Release-Zyklus aktualisiert. In Debian 13 hinkt die Version zwei Hauptversionen hinterher. Die Docker-Dokumentation sowie die Installationsanleitungen für die meisten Anwendungen basieren auf den eigenen Docker-Paketen (docker-ce).
  • AlmaLinux (sowie RHEL und Rocky Linux): Red Hat liefert anstelle von Docker Podman aus. Das Paket podman-docker aus dem AppStream-Repository stellt einen Befehl namens docker bereit, der jedoch tatsächlich Podman aufruft. Die meisten Befehle funktionieren zwar trotzdem, doch Podman ist nicht der Docker-Daemon, und auch Docker Compose läuft damit nicht auf dieselbe Weise. Wenn in einer Anleitung Docker verlangt wird, installieren Sie bitte die Docker-eigenen Pakete. Im Test kam es zu einem Konflikt zwischen podman-docker und docker-ce, sodass dnf deren gleichzeitige Installation nicht zuließ.

Die eigenen Docker-Pakete stehen in Konflikt mit den Paketen der Distribution. Falls auf dem Server bereits eine ältere, zur Distribution gehörende Docker-Version installiert ist, entfernen Sie diese bitte vor der Installation (die Container, Images und Volumes im Verzeichnis /var/lib/docker bleiben dabei erhalten):

# Ubuntu
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
# Debian
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc docker-buildx podman-docker containerd runc | cut -f1)
# AlmaLinux
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc

Wenn keines der Pakete installiert ist, gibt dpkg die Meldung „no packages found matching“ und dnf die Meldung „No match for argument“ aus und löscht nichts. Dies ist kein Fehler.

Installation unter Ubuntu

Das Docker-Repository unterstützte im November 2026 die 64-Bit-Versionen der Ubuntu-Versionen 22.04, 24.04, 26.04 und 26.10. Bitte fügen Sie den Signaturschlüssel des Repositorys sowie die Repository-Beschreibung gemäß der Docker-Dokumentation hinzu:

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

In die Zeile Suites schreibt der Befehl den Codenamen des Systems (bei Ubuntu 26.04 resolute, bei 24.04 noble), sodass derselbe Befehl auf allen unterstützten Versionen funktioniert. Installieren Sie anschließend die Pakete:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Unter Ubuntu und Debian wird der docker-Dienst unmittelbar nach der Installation gestartet und läuft auch beim Systemstart; dies wird durch die Befehle systemctl is-active docker und systemctl is-enabled docker angezeigt (active, enabled).

Installation unter Debian

Unter Debian verläuft der Vorgang genauso, lediglich die Adresse des Repositorys und der Codename unterscheiden sich (Debian 13: trixie, Debian 12: bookworm; Docker unterstützte diese beiden im November 2026):

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Beschreibung des Docker-Repositorys, Version des installierten docker-ce-Pakets und Ausgabe des Befehls docker compose version unter Debian 13

Welche Linux-Version auf dem Server läuft, erfahren Sie im Artikel Abfrage der Linux-Version.

Installation auf AlmaLinux

Unter AlmaLinux können Sie das Docker-Repository für RHEL verwenden. Die Docker-Dokumentation listet die Versionen RHEL 8, 9 und 10 auf; wir haben dies auf AlmaLinux 10.2 getestet. Bitte aktualisieren Sie das System vor der Installation, und starten Sie den Rechner neu, falls ein neuer Kernel verfügbar ist (den Grund hierfür finden Sie weiter unten im Abschnitt zur Fehlerbehebung):

sudo dnf upgrade
sudo reboot

Nehmen Sie anschließend das Repository auf und installieren Sie die Pakete:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Bei der ersten Installation fragt dnf nach dem GPG-Schlüssel des Repositorys. Akzeptieren Sie diesen, wenn der Fingerabdruck 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 lautet.

Unter AlmaLinux startet der Dienst nach der Installation nicht automatisch; er muss separat aktiviert werden:

sudo systemctl enable --now docker

Der Status des Docker-Dienstes, die Versionen von Docker und Compose sowie – anhand der Ausgabe von docker info – die Serverversion, der Storage-Treiber und das Firewall-Backend auf einem AlmaLinux-10.2-System

Die Zeile Firewall Backend: iptables+firewalld im Ausgabeprotokoll von docker info weist darauf hin, dass Docker das laufende firewalld erkannt hat (darauf wird im Abschnitt zur Firewall näher eingegangen). Informationen zur Verwaltung der Dienste finden Sie im Artikel systemctl: Dienste starten, stoppen und neu starten.

Fehlerbehebung: „Extension addrtype revision 0 not supported“

Im Test startete das frisch installierte Docker unter AlmaLinux 10 zunächst nicht (Job for docker.service failed). Im Protokoll journalctl -u docker war Folgendes zu lesen:

failed to add jump rules to ipv4 NAT table: ... Warning: Extension addrtype revision 0 not supported, missing kernel module?

Für die Docker-Firewall-Regeln wird das Kernelmodul xt_addrtype benötigt, das in AlmaLinux 10 im Paket kernel-modules-extra enthalten ist. Bei der Installation von Docker wird dieses Modul von dnf als Abhängigkeit installiert (das Paket iptables-nft bindet es ein), jedoch stets für den aktuellsten Kernel. Läuft auf dem Rechner noch ein älterer Kernel, wird das Modul dort nicht installiert. Lösung: Aktualisieren Sie das System und starten Sie den Rechner neu; im Test lief Docker nach dem Neustart problemlos an. Falls das Paket fehlt, installieren Sie es manuell:

sudo dnf install kernel-modules-extra
sudo reboot

Das Installationsskript (get.docker.com)

Docker bietet zudem ein Installationsskript an, das das System erkennt, das Repository einbindet und alles installiert:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --dry-run
sudo sh get-docker.sh

Mit dem Schalter --dry-run gibt das Skript lediglich aus, was es ausführen würde. Im Test wurden unter Debian 13 dieselben Pakete installiert wie bei der manuellen Vorgehensweise, einschließlich des docker-model-plugin-Plugins, und der Dienst wurde ebenfalls gestartet. Unter AlmaLinux würde das Repository https://download.docker.com/linux/alma/docker-ce.repo hinzugefügt werden.

Laut der Docker-Dokumentation ist das Skript für Test- und Entwicklungsumgebungen vorgesehen und wird nicht für Produktionsserver empfohlen: Es ermöglicht keine Auswahl der Version und installiert stets die aktuellsten Pakete (möglicherweise sogar mit einer neuen Hauptversion). Installieren Sie einen Produktionsserver anhand der oben genannten manuellen Schritte und führen Sie kein aus dem Internet heruntergeladenes Skript unüberprüft als Root aus. Sie können die heruntergeladene Datei get-docker.sh vor der Ausführung auch überprüfen.

Test: hello-world

sudo docker run --rm hello-world

Docker lädt das hello-world-Image von Docker Hub herunter, startet es, und der Container gibt die Meldung „Hello from Docker!“ aus. Der Schalter --rm löscht den ausgeführten Container anschließend.

Die Ausgabe des Testcontainers hello-world unter Ubuntu 26.04: Hello from Docker!

So können Sie die Version der Compose- und Buildx-Plugins überprüfen:

docker compose version
docker buildx version

„Compose“ ist heute der Unterbefehl docker compose (mit Leerzeichen geschrieben). Das alte Programm docker-compose (mit Bindestrich) wird nicht mehr mit den Docker-Paketen installiert.

Docker ohne Root-Rechte: die Docker-Gruppe

Standardmäßig können nur root (und Benutzer mit sudo) auf den Docker-Daemon zugreifen. Bei anderen Benutzern wird der Befehl wie folgt abgebrochen:

permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

Wenn Sie nicht vor jedem Befehl sudo eingeben möchten, fügen Sie den Benutzer zur Gruppe docker hinzu und melden Sie sich anschließend ab und wieder an (oder stellen Sie eine neue SSH-Verbindung her), damit die Gruppenzugehörigkeit wirksam wird:

sudo usermod -aG docker $USER

Nach der erneuten Anmeldung funktioniert der Befehl docker ps nun ohne sudo. Weitere Informationen zu Gruppen finden Sie im Artikel Auflistung von Benutzern und Gruppen unter Linux.

Achtung: Mitglieder der Gruppe docker erhalten praktisch Root-Rechte. Sie können jeden beliebigen Ordner in einen Container einbinden, sogar das gesamte Dateisystem des Rechners. Im Test führte der Befehl docker run --rm -v /:/host alpine cat /host/etc/shadow, der ohne Passwort und ohne sudo ausgeführt wurde, zur Ausgabe der Datei, die die Passwort-Hashes enthält. Fügen Sie daher nur solche Benutzer zur Gruppe hinzu, denen Sie auch Root-Rechte gewähren würden, und lassen Sie niemals eine Webanwendung oder einen SFTP-Benutzer Mitglied dieser Gruppe werden.

Der rootless-Modus von Docker ist sicherer (der Daemon läuft ebenfalls im Namen des Benutzers), doch laut Dokumentation gibt es Einschränkungen; so kann er beispielsweise standardmäßig nicht auf Ports unter 1024 lauschen. Dieser Modus wird in diesem Artikel nicht behandelt.

Begrenzung der Logdateigröße

Docker verwendet standardmäßig den Log-Treiber json-file ohne Größenbeschränkung: Alles, was ein Container in seine Ausgabe schreibt, wird in eine Datei im Verzeichnis /var/lib/docker/containers/ gespeichert. Ein Container, der umfangreiche Protokolle erzeugt, kann somit innerhalb weniger Tage die Festplatte füllen. Im Test wuchs das Protokoll eines kontinuierlich schreibenden Containers innerhalb von 10 Sekunden auf 1 GB an.

Legen Sie das Limit in der Datei /etc/docker/daemon.json fest (diese existiert standardmäßig nicht; erstellen Sie sie bitte):

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Dadurch verbleiben pro Container maximal 3 Protokolldateien mit einer Größe von jeweils maximal 10 MB. Starten Sie Docker nach dem Speichern neu:

sudo systemctl restart docker

Im Test blieben nach der Konfiguration im Verzeichnis des „viel schreibenden“ Containers tatsächlich drei Dateien übrig (…-json.log, .1, .2) mit einer Größe von jeweils etwa 10 MB. Wichtig: Die Konfiguration gilt nur für neu erstellte Container. Bereits vorhandene Container müssen gelöscht und neu erstellt werden (mit Compose: docker compose up -d --force-recreate). Bei einer fehlerhaften JSON-Datei startet Docker nicht (im Test nach einem überflüssigen Komma: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid JSON); überprüfen Sie daher nach einem Neustart stets die Ausgabe von systemctl status docker. Das Löschen bereits angewachsener Protokolldateien wird im Artikel Löschen von Docker-Images, Containern und Volumes beschrieben.

Der erste echte Container

Starten Sie einen Nginx-Webserver, der über Port 8080 des Rechners erreichbar ist:

docker run -d --name web -p 127.0.0.1:8080:80 nginx:alpine
docker ps
curl -sI http://127.0.0.1:8080 | head -2
  • -d: Der Container läuft im Hintergrund.
  • --name web: Der Name des Containers; damit können Sie darauf verweisen (docker logs web, docker stop web).
  • -p 127.0.0.1:8080:80: Leitet den Port 8080 des Rechners auf den Port 80 des Containers um, jedoch nur unter der lokalen Adresse. Von außen ist dieser Port nicht erreichbar. Wenn Sie das Präfix weglassen (-p 8080:80), ist der Port unter allen Adressen, auch aus dem Internet, offen, unabhängig von der Firewall (siehe den nächsten Abschnitt).
  • nginx:alpine: Name und Tag des Images. Docker lädt es herunter, falls es noch nicht auf dem Rechner vorhanden ist.

Die Standardausgabe von docker ps ist sehr umfangreich. Die Abbildung zeigt eine komprimierte Version, die auf die wichtigsten Spalten beschränkt ist:

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'

Das Starten des Containers nginx:alpine, die Daten des laufenden Containers in der Ausgabe von docker ps sowie die Antwort des Webservers unter der Adresse 127.0.0.1:8080 auf einem Ubuntu 26.04-System

Das Anhalten und Löschen des Containers:

docker stop web
docker rm web

Es ist praktischer, mehrere zusammengehörige Container (beispielsweise eine Anwendung und deren Datenbank) in einer Datei zu beschreiben: Darum geht es im Artikel Verwendung von Docker Compose. Wenn Sie die Container über einen Webbrowser verwalten möchten, hilft Ihnen der Artikel zu Portainer, Dockge und Coolify bei der Auswahl; mehrere Webanwendungen auf einem Server mit gemeinsamem SSL-Zertifikat können zudem vom Nginx Proxy Manager bereitgestellt werden.

Wichtig: Die veröffentlichten Ports werden von der Firewall nicht blockiert

Docker öffnet die mit dem Schalter -p veröffentlichten Ports mithilfe eigener iptables-Regeln: Das eingehende Paket wird noch vor den Regeln der Firewall an den Container weitergeleitet (DNAT). Somit wird dieser Datenverkehr weder von ufw noch von firewalld gefiltert. Dies wird auch in der Docker-Dokumentation beschrieben, und genau so verlief es auch im Test:

  • Ubuntu 26.04 und Debian 13 mit ufw: ufw war aktiviert und ließ nur SSH zu (Default: deny (incoming)). Ein einfacher Webserver, der ohne Docker lief, war von außen über Port 8081 nicht erreichbar, während der mit dem Schalter -p 8080:80 gestartete Nginx-Container auch von außen antwortete.
  • AlmaLinux 10.2 mit firewalld: dasselbe. In der public-Zone von firewalld waren lediglich die Dienste ssh, cockpit und dhcpv6-client zugelassen, dennoch war der Port 8080 des Containers erreichbar. Die Regelkette von firewalld lässt Pakete mit Adressumwandlung (DNAT) vor den Zonen und Richtlinien durch (ct status dnat accept), weshalb der Port auch mit einer eigenen firewalld-Richtlinie nicht gesperrt werden konnte.

Ufw lässt nur SSH zu, dennoch zeigt docker ps auf einem Debian-13-System den unter der Adresse 0.0.0.0:8080 veröffentlichten Port an.

Welcher Port auf welche Adresse lauscht, zeigt der Befehl sudo ss -tlnp an: 0.0.0.0:8080 und [::]:8080 stehen für alle Adressen, 127.0.0.1:8080 nur für die lokale Adresse (siehe: Auflistung offener Ports: ss und lsof).

Lösung 1: Binden Sie den Port an die lokale Adresse

Am einfachsten und sichersten ist es: Was nicht direkt über das Internet erreichbar sein muss, binden Sie an die Adresse 127.0.0.1.

docker run -d --name web -p 127.0.0.1:8080:80 nginx:alpine

Das Gleiche in einer Compose-Datei:

    ports:
      - "127.0.0.1:8080:80"

Im Test war der Port somit von außen auf keinem der Systeme erreichbar. Die Webanwendungen werden anschließend über einen Reverse-Proxy (beispielsweise den Nginx Proxy Manager oder den auf dem Rechner installierten Nginx) auf den Ports 80 und 443 über HTTPS bereitgestellt; auf eine Datenbank oder eine Verwaltungsoberfläche können Sie über einen SSH-Tunnel von Ihrem eigenen Rechner aus zugreifen (ssh -L 8080:127.0.0.1:8080 felhasznalo@szerver-ip).

In der Datei daemon.json bindet die Einstellung "ip": "127.0.0.1" auch das Format -p 8080:80 an die lokale Adresse, jedoch gilt dies im Test nur für das Standardnetzwerk (beim einfachen Befehl docker run). Compose erstellt für jedes Projekt ein eigenes Netzwerk, und dort ist der Port "8080:80" weiterhin für alle Adressen offen. Verlassen Sie sich daher nicht auf diese Einstellung; geben Sie das Präfix 127.0.0.1: an.

Lösung 2: Regel in der DOCKER-USER-Kette

Sollte ein Port eines Containers auch von außen erreichbar sein, jedoch nur von bestimmten Adressen aus, muss die Regel in die von Docker hierfür reservierte iptables-Kette DOCKER-USER eingetragen werden; diese wird von Docker nicht überschrieben. Die folgende Regel verwirft neue Verbindungen, die über die externe Netzwerk-Schnittstelle (hier enp0s1, Ihre eigene wird durch den Befehl ip -br a angezeigt; auf VPS-Servern häufig eth0 oder ens3) eingehen, mit Ausnahme derjenigen, die von der Adresse 203.0.113.10 stammen. Ausgehende Verbindungen der Container sowie Antwortpakete werden weiterhin durchgelassen.

Ubuntu und Debian (ufw): Die Regel sollte am Ende der Datei /etc/ufw/after.rules eingefügt werden, damit ufw sie bei jedem Start und jedem Neuladen lädt:

# Docker: neue Verbindungen zu den Containern von außen nur von der angegebenen Adresse
*filter
:DOCKER-USER - [0:0]
-A DOCKER-USER -i enp0s1 -p tcp -m conntrack --ctstate NEW --ctorigdstport 443 -j RETURN
-A DOCKER-USER -i enp0s1 -m conntrack --ctstate NEW ! -s 203.0.113.10 -j DROP
COMMIT
sudo ufw reload
sudo iptables -S DOCKER-USER

Die Zeile --ctorigdstport 443 bildet eine Ausnahme: Auf Port 443 (beispielsweise auf einen Reverse-Proxy-Container) kann von überall aus zugegriffen werden, auf die übrigen veröffentlichten Ports hingegen nur von der angegebenen Adresse aus. Falls Sie keinen solchen Port haben, lassen Sie die Zeile weg. Im Test (Ubuntu 26.04, Debian 13) blieb die Regel auch nach dem Befehl ufw reload, dem Neustart von Docker und dem Neustart des Rechners bestehen; der Port der Ausnahme blieb erreichbar, während die übrigen veröffentlichten Ports von außen nicht mehr erreichbar waren.

AlmaLinux (firewalld): Mit den direkten Regeln von firewalld:

sudo firewall-cmd --permanent --direct --add-chain ipv4 filter DOCKER-USER
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -i eth0 -m conntrack --ctstate NEW ! -s 203.0.113.10 -j DROP
sudo firewall-cmd --reload
sudo iptables -S DOCKER-USER

Im Test (AlmaLinux 10.2, firewalld 2.4.3) blieb die Regel auch nach dem Befehl firewall-cmd --reload und einem Neustart des Systems gültig. Nach dem Befehl --reload baute Docker einige Sekunden lang seine eigenen Regeln neu auf; währenddessen waren die Container nicht erreichbar. In der firewalld-Dokumentation wird die direkte Schnittstelle als veraltet gekennzeichnet, daher ist auch hier Lösung 1 die bevorzugte Vorgehensweise.

Diese Regeln gelten ausschließlich für IPv4, und auch der Test wurde nur für IPv4 durchgeführt. Falls auf dem Server auch IPv6 verfügbar ist, deckt die Bindung an 127.0.0.1 beide Protokolle ab; daher ist dies auch dort der einfachere Weg. Über die Grundeinstellungen der Firewall erfahren Sie mehr im Artikel Wie richte ich eine Firewall auf meinem VPS ein?.

Aktualisierung

Die Docker-Pakete werden zusammen mit den übrigen Systempaketen aktualisiert (sudo apt upgrade bzw. sudo dnf upgrade; siehe: Systemaktualisierung mit den Befehlen dnf und apt). Der docker-Dienst wird bei der Aktualisierung neu gestartet, ebenso wie die Container: Container, die ohne die Neustartregel (--restart unless-stopped bzw. in Compose restart: unless-stopped) gestartet wurden, bleiben im gestoppten Zustand. Die Images der laufenden Container werden nicht automatisch aktualisiert; dazu müssen Sie das neue Image herunterladen und den Container neu erstellen.

Deinstallation von Docker

Ubuntu und Debian:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm /etc/apt/sources.list.d/docker.sources /etc/apt/keyrings/docker.asc

AlmaLinux:

sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm /etc/yum.repos.d/docker-ce.repo

Wenn Sie die Installation über das Installationsskript vorgenommen haben, fügen Sie bitte auch das Paket docker-model-plugin zur Liste hinzu; unter Debian und Ubuntu schreibt das Skript das Repository in die Datei /etc/apt/sources.list.d/docker.list.

Das Löschen der Pakete führt nicht zum Löschen der Images, Container und Volumes. Falls Sie diese ebenfalls nicht benötigen (sie werden dann – einschließlich der darin enthaltenen Datenbanken – endgültig gelöscht):

sudo rm -rf /var/lib/docker /var/lib/containerd

Nach der Deinstallation im Test sind einige Elemente zurückgeblieben, die Sie manuell löschen können: die docker-Gruppe (sudo groupdel docker), die Datei /etc/docker/daemon.json sowie unter AlmaLinux die docker-Zone von firewalld und die docker-forwarding-Richtlinie:

sudo firewall-cmd --permanent --delete-policy=docker-forwarding
sudo firewall-cmd --permanent --delete-zone=docker
sudo firewall-cmd --reload

Falls Sie für ufw oder firewalld eine DOCKER-USER-Regel festgelegt haben, entfernen Sie diese bitte ebenfalls.

Zurück: Linux-Artikel (76)