Direkt zum Inhalt

Installiere Docker auf Debian: Eine komplette Installationsanleitung

Dieser Leitfaden erklärt vier Installationsmethoden, vom offiziellen Docker-Repository bis zur manuellen Paketinstallation, und zeigt dir auch, wie du nach der Installation alles für den Einsatz in Unternehmen richtig einstellst. Du lernst, wie du deine Docker-Umgebung sicher machst, häufige Probleme löst und eine produktionsreife Umgebung aufrechterhältst.
Aktualisierte 24. Juli 2025  · 15 Min. Lesezeit

Docker auf Debian zu installieren sollte nicht bedeuten, dass du raten musst, welche Methode dein System nicht kaputt macht.

Die meisten Anleitungen zeigen dir mehrere Installationsoptionen, ohne zu erklären, wann du welche Option verwenden sollst. Am Ende hast du veraltete Pakete aus dem Debian-Repository oder, noch schlimmer, Berechtigungsfehler, die dich aus deinen eigenen Containern aussperren. Das Ergebnis? Du verbringst Stunden mit der Fehlerbehebung, anstatt Anwendungen einzurichten.

Der vorhersehbare Release-Zyklus und die super Stabilität von Debian machen es perfekt für Docker-Bereitstellungen in der Produktion. Du bekommst eine gleichbleibende Containerleistung, ohne dass überraschende System-Updates deine Konfiguration durcheinanderbringen. Theoretisch sollte es nach dem schwierigsten Teil, der Installation, keine Probleme mehr geben.

In diesem Tutorial zeige ich dir vier Installationsmethoden, wichtige Sicherheitsmaßnahmen, die Konfiguration des Speichers und Schritte zur Fehlerbehebung, damit Docker unter Debian zuverlässig läuft.

Noch nie was von Docker gehört? Mach dich erst mal mit den Grundlagen von Docker vertraut, bevor du mit der Installation loslegst.

Systemvoraussetzungen

Docker läuft auf den meisten modernen Debian-Systemen, aber du musst erst ein paar Optionen aktivieren. In diesem Abschnitt zeige ich dir die genauen Systemanforderungen, bevor du mit der Installation loslegst.

Für die aktuellen Docker-Versionen brauchst du Debian 10 (Buster) oder neuer. Ältere Versionen wie Debian 9 funktionieren nicht mit den aktuellen Docker Engine-Builds. Deine Kernel-Version sollte 3.10 oder höher sein – die meisten Debian-Installationen der letzten Jahre erfüllen diese Anforderung automatisch.

Du brauchst Root-Zugriff oder sudo-Rechte auf dem System, um Docker-Pakete zu installieren und das System einzurichten. Docker braucht außerdem diese Kernpakete: apt-transport-https, ca-certificates, curl und gnupg. Die meisten Debian-Systeme haben diese schon installiert, aber du kannst das später noch mal checken.

Die Hardware-Anforderungen sind echt minimal:

  • 2 GB RAM für einfache Container-Workloads, aber 4 GB oder mehr sind besser für Entwicklungsumgebungen
  • Für Docker-Images und Container-Daten brauchst du mindestens 10 GB freien Speicherplatz. Die Produktionsvorbereitungen sollten viel mehr einplanen.

Wenn du die GNOME-Desktopumgebung benutzt, vergewissere dich, dass das Paket „ gnome-terminal “ installiert ist. Einige Docker-Verwaltungstools brauchen das für interaktive Containersitzungen.

Entferne alle alten Docker-Installationen, bevor du loslegst. Ältere Pakete wie „ docker “, „ docker.io “ oder „ docker-engine “ können Probleme mit der aktuellen Docker Engine verursachen. Führ diesen Befehl aus, um alte Versionen zu löschen:

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

Deine Firewall und Netzwerk-Einstellungen können die Netzwerkverbindung von Containern beeinflussen. Docker macht seine eigenen Netzwerkschnittstellen und iptables-Regeln. Wenn du UFW oder eigene Firewall-Regeln benutzt, musst du diese nach der Installation vielleicht anpassen, damit der Container-Datenverkehr funktioniert.

Schau dir jetzt die Anforderungen an – das spart dir später Zeit bei der Fehlersuche.

Installationsmethoden

Du hast vier Möglichkeiten, Docker auf Debian zu installieren, jede mit unterschiedlichen Vor- und Nachteilen. Ich helfe dir dabei, die Methode zu finden, die am besten zu deiner Umgebung und deinen Sicherheitsanforderungen passt.

Suchst du eher nach einer Anleitung zur Installation von Ubuntu? Wir haben eine komplette Schritt-für-Schritt-Anleitung für die Installation von Docker auf Ubuntu.

Methode 1: Offizielles Docker-Repository (empfohlen)

Mit dieser Methode bekommst du die neueste Docker-Version mit regelmäßigen Sicherheitsupdates.

Im offiziellen Repository von Docker findest du immer die neuesten stabilen Versionen und bekommst Updates automatisch über deinen Paketmanager. Du bleibst nicht auf veralteten Versionen hängen, denen wichtige Sicherheitspatches oder neue Funktionen fehlen.

Aktualisiere erst mal dein System und installiere die Pakete, die Docker braucht:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Füge dann den offiziellen GPG-Schlüssel von Docker hinzu, um die Echtheit des Pakets zu überprüfen:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Konfigurier das Repository, indem du es zu deiner Quellenliste hinzufügst:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Zum Schluss installierst du noch Docker Engine, CLI und Compose:

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

Damit hast du alles, was du für Docker-Bereitstellungen in der Produktion brauchst.

Methode 2: Standard-Debian-Repository

Mit diesem Ansatz installierst du Docker mit einem einzigen Befehl, bekommst aber eine ältere Version.

Das Standard-Repository von Debian macht die Installation einfach – einfach sudo apt install docker.io ausführen. Aber es gibt einen Haken: Du bekommst oft Docker-Versionen, die Monate oder sogar Jahre hinter der aktuellen Version zurückliegen.

sudo apt update
sudo apt install docker.io

Diese Methode eignet sich gut für einfache Tests oder wenn du aus Kompatibilitätsgründen eine bestimmte ältere Version benötigst. Allerdings verpasst du dann Sicherheitsupdates, Leistungsverbesserungen und neue Funktionen, die mit den neuesten Docker-Versionen kommen.

Benutz diese Methode nur, wenn das offizielle Repository nicht verfügbar ist.

Methode 3: Manuelle Installation des DEB-Pakets

Ich zeige dir, wie du Pakete direkt runterladen und installieren kannst, wenn du keinen Zugriff auf Repositories hast.

Diese Methode eignet sich für luftisolierte Systeme, Unternehmensnetzwerke mit eingeschränktem Internetzugang oder wenn du dieselbe Docker-Version auf mehreren Rechnern installieren musst, ohne sie immer wieder herunterladen zu wollen.

Lade die DEB-Pakete von der Docker-Website runter:

  1. Geh zu https://download.docker.com/linux/debian/dists/

  2. Wähle deine Debian-Version aus (Bullseye, Bookworm usw.).

  3. Geh zu pool/stable/amd64/

  4. Lade diese Pakete runter: docker-ce_*.deb, docker-ce-cli_*.deb und containerd.io_*.deb

Installiere die Pakete in der angegebenen Reihenfolge:

sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb

Wenn du Abhängigkeitsfehler bekommst, mach mal „ sudo apt-get install -f “, um sie zu beheben.

Diese Methode erfordert mehr manuelle Arbeit bei Updates, aber du hast die volle Kontrolle darüber, welche Version installiert wird.

Methode 4: Praktische Skripte

Die letzte Methode, die ich dir zeigen werde, ist super schnell für Testumgebungen, aber du solltest das Skript vorher checken.

Docker hat Installationsskripte, die dein System erkennen und Docker automatisch installieren. Sie sind praktisch, um schnell Testumgebungen einzurichten oder wenn du Docker auf mehreren Systemen installierst.

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

Schau dir das Skript immer an, bevor du es startest:

cat get-docker.sh

Achte auf alles, was dir komisch oder seltsam vorkommt. Das Skript ändert deine Systemkonfiguration, also solltest du wissen, was es macht.

Führ das Skript aus, nachdem du es überprüft hast:

sudo sh get-docker.sh

Verwende keine Convenience-Skripte in der Produktion. Sie sind für eine schnelle Einrichtung gedacht, nicht für sichere, wiederholbare Bereitstellungen. Bleib bei der offiziellen Repository-Methode für wichtige Systeme.

Ich empfehle, die offizielle Repository-Methode zu wählen, es sei denn, du hast bestimmte Einschränkungen, die einen anderen Ansatz erfordern.

Überprüfen deiner Installation

Die Installation ist nur der erste Schritt – du musst erst mal checken, ob Docker wirklich funktioniert, bevor du irgendwas einsetzt. Mit diesen schnellen Tests kannst du überprüfen, ob deine Docker-Konfiguration für echte Workloads bereit ist.

Überprüfe deine Docker-Version , um sicherzugehen, dass die Installation abgeschlossen ist:

docker --version

Du solltest eine Ausgabe wie „ Docker version xx.x.x, build x “ sehen. Wenn du die Fehlermeldung „Befehl nicht gefunden“ bekommst, wurde Docker nicht richtig installiert oder ist nicht in deinem PATH.

Hol dir detaillierte Build-Infos , um zu sehen, welche Komponenten laufen:

docker version

Hier siehst du die verschiedenen Client- und Server-Versionen sowie Details zur Architektur. Der Server-Abschnitt zeigt, dass der Docker-Daemon läuft und erreichbar ist.

Starte einen Testcontainer , um zu überprüfen, ob alles von Anfang bis Ende funktioniert:

docker run hello-world

Docker lädt das Image „hello-world“ runter und startet es. Wenn alles richtig läuft, bekommst du eine Nachricht, die erklärt, wie Docker-Container funktionieren. Dieser Test zeigt, dass Docker Images abrufen, Container erstellen und Befehle ausführen kann.

Du kannst überprüfen, ob Docker Compose installiert und funktioniert:

docker compose version

Du solltest eine Ausgabe wie „ Docker Compose version vX.xx.x “ sehen. Beachte, dass neuere Docker-Installationen den Befehl „ docker compose “ (mit Leerzeichen) anstelle des alten Befehls „ docker-compose “ verwenden.

Wenn alle diese Befehle ohne Fehler funktionieren, ist deine Docker-Installation einsatzbereit.

Bist du bereit, deinen ersten echten Container zu starten? Lerne Schritt für Schritt, wie du Docker-Images startest.

Nach der Installation

Docker funktioniert sofort, aber für den täglichen Gebrauch solltest du ein paar Dinge konfigurieren. In diesem Abschnitt geht's um das Service-Management und Benutzerberechtigungen, die Docker noch praktischer und sicherer machen.

Dienstleistungsmanagement

Mit diesen systemd-Befehlen kannst du steuern, wann Docker ausgeführt wird:

sudo systemctl start docker    # Start Docker
sudo systemctl stop docker     # Stop Docker
sudo systemctl restart docker  # Restart Docker service

Damit Docker automatisch starten zu lassen , wenn dein System hochfährt, mach Folgendes:

sudo systemctl enable docker

Dadurch wird sichergestellt, dass Docker bei jedem Neustart deines Servers ausgeführt wird, was für Produktionssysteme erforderlich ist.

Wenn du überprüfen musst, ob Docker läuft, überprüfen, ob Docker läuft und seinen aktuellen Status sehen willst, gib diesen Befehl ein:

sudo systemctl status docker

Du siehst, ob der Dienst läuft, wie lange er schon läuft und ob es irgendwelche aktuellen Protokollmeldungen gibt. Wenn Docker nicht funktioniert, zeigt dir dieser Befehl normalerweise, warum.

Um Probleme mit dem Dienst zu beheben, schau mal in den Protokollen nach:

sudo journalctl -u docker.service

Hier findest du detaillierte Docker-Daemon-Protokolle, die bei der Diagnose von Startproblemen, Berechtigungsfehlern oder Konfigurationsproblemen helfen.

Zugriff für Nicht-Root-Benutzer

Wenn du deinen Benutzer zur Docker-Gruppe hinzufügen musst, um Docker-Befehle ohne sudo auszuführen:

sudo usermod -aG docker $USER

Damit wird dein aktueller Benutzer zur Gruppe „ docker “ hinzugefügt, die dir die Berechtigung gibt, mit dem Docker-Daemon zu kommunizieren.

Du musst dich dann abmelden und wieder anmelden, damit die Gruppenänderung übernommen wird:

logout

Oder starte deine Terminal-Sitzung neu. Du kannst auch „ newgrp docker “ ausführen, um die Gruppe in deiner aktuellen Sitzung zu aktivieren, ohne dich abzumelden.

Um den Nicht-Root-Zugriff zu testen, gib diesen Docker-Befehl ein:

docker run hello-world

Wenn das ohne sudo klappt, bist du startklar.

Aber hier ist der Kompromiss bei der Sicherheit: Benutzer in der Docker-Gruppe haben Root-Rechte auf deinem System. Sie können Host-Verzeichnisse einbinden, auf sensible Dateien zugreifen und möglicherweise Container verlassen, um den Host zu kompromittieren.

Füge nur vertrauenswürdige Benutzer zur Docker-Gruppe hinzu und mach das auf keinen Fall auf gemeinsam genutzten Systemen, wo du nicht alle Benutzer kontrollieren kannst.

Mach diese Einstellungen einmal und schon wird die tägliche Arbeit mit Docker viel einfacher.

Konfiguration des Speichertreibers

Der Speichertreiber von Docker kümmert sich darum, wie Container-Images und Daten auf deinem System gespeichert werden. Die meisten Leute müssen das nie ändern, aber wenn du weißt, was du ändern kannst, kannst du die Leistung für bestimmte Aufgaben besser anpassen.

Docker sucht während der Installation automatisch den besten Speichertreiber für dein System. Unter Debian ist das normalerweise „ overlay2 “, das für die meisten Anwendungen super Leistung und Stabilität bietet.

Überprüfe deinen aktuellen Speichertreiber mit diesem Befehl:

docker info | grep "Storage Driver"

Der Treiber „ overlay2 ” funktioniert gut, weil er:

  • Verarbeitet Kopiervorgänge beim Schreiben schnell wenn Container Dateien ändern
  • Teilt Ebenen zwischen Bildern um Speicherplatz zu sparen
  • Unterstützt alle Docker-Funktionen ohne Probleme mit der Kompatibilität
  • Funktioniert zuverlässig über verschiedene Dateisystemtypen hinweg

Wenn du spezielle Workloads ausführst oder bestimmte Dateisystemanforderungen hast, brauchst du vielleicht einen anderen Speichertreiber. 

Manche Unternehmensspeichersysteme funktionieren zum Beispiel besser mit dem Treiber „ devicemapper “, oder du brauchst „ vfs “, um Probleme mit dem Container-Dateisystem zu beheben.

Du kannst den Speichertreiber ändern , indem du die Daemon-Konfiguration von Docker bearbeitest:

sudo nano /etc/docker/daemon.json

Füge hier die Einstellung für den Speichertreiber hinzu oder ändere sie:

{
  "storage-driver": "devicemapper"
}

Vergiss nicht, Docker neu zu starten, damit die Änderung übernommen wird:

sudo systemctl restart docker

Bitte beachte, dass du nach dem Ändern der Speichertreiber nicht mehr auf deine bestehenden Container und Images zugreifen kannst. Mach erst mal ein Backup von wichtigen Daten oder exportier Container, die du behalten willst.

Jetzt kannst du den neuen Treiber testen, indem du ein Image ziehst und einen Container startest:

docker pull hello-world
docker run hello-world

Kurz gesagt: Bleib bei „ overlay2 “, es sei denn, du hast bestimmte Anforderungen, die einen anderen Treiber erfordern.

Sicherheit verbessern

Die Standard-Docker-Installationen funktionieren gut für die Entwicklung, aber Produktionsumgebungen brauchen zusätzliche Sicherheitsmaßnahmen. Diese Einstellungen schützen dein Host-System vor Container-Ausbrüchen und Angriffen, die darauf abzielen, die Ressourcen auszuschöpfen.

SELinux/AppArmor Integration

Obligatorische Zugriffskontrollen sorgen für eine zusätzliche Sicherheitsebene, die die Möglichkeiten von Containern einschränkt, selbst wenn sie gehackt werden. Ohne diese Kontrollen kann ein Container, der als Root läuft, möglicherweise auf Host-Ressourcen zugreifen, auf die er nicht zugreifen sollte.

Du kannst AppArmor für Docker, das Standard-Sicherheitsframework von Debian, mit diesen Befehlen aktivieren:

sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor

Sobald AppArmor läuft, das Sicherheitsprofil von Docker laden:

sudo apparmor_parser -r /etc/apparmor.d/docker

Jetzt kannst du Container mit aktiviertem AppArmor-Schutz ausführen:

docker run --security-opt apparmor=docker-default nginx

Das Profil „ docker-default “ schränkt Container-Funktionen wie das Mounten von Dateisystemen, den Zugriff auf rohe Netzwerkschnittstellen und das Laden von Kernel-Modulen ein.

Für SELinux-Systeme (wenn du das anstelle von AppArmor benutzt), musst du zuerst die Container-Verwaltung aktivieren:

sudo setsebool -P container_manage_cgroup on

Dann startest du Container mit SELinux-Labels:

docker run --security-opt label=type:container_t nginx

Diese Kontrollen blockieren viele gängige Container-Escape-Techniken und begrenzen den Schaden durch kompromittierte Container.

Daemon-Konfiguration

Du kannst (und solltest) die Einstellungen des Docker-Daemons anpassen, um die Angriffsfläche zu verkleinern und die Sicherheit zu verbessern. Mach die Datei „ /etc/docker/daemon.json “ neu oder bearbeite sie:

{
  "live-restore": true,
  "userland-proxy": false,
  "no-new-privileges": true,
  "icc": false,
  "disable-legacy-registry": true
}

Hier ist, was die einzelnen Einstellungen machen:

  • live-restore: true hält Container am Laufen, wenn der Docker-Daemon abstürzt

  • userland-proxy: false Verwendet iptables direkt anstelle des Userland-Proxys, um die Leistung zu verbessern.

  • no-new-privileges: true Verhindert, dass Container neue Berechtigungen bekommen.

  • icc: false deaktiviert standardmäßig die Kommunikation zwischen Containern disable-legacy-registry: true blockiert den Zugriff auf alte, unsichere Registrierungsprotokolle

Nachdem du diese Änderungen gemacht hast, starte Docker neu, damit sie funktionieren:

sudo systemctl restart docker

Du solltest Container auch immer als Nicht-Root-Benutzer starten, wenn das geht:

docker run --user 1000:1000 nginx

Das schränkt ein, was gefährdete Container auf deinem System anstellen können.

Ressourcenbeschränkungen mit Kontrollgruppen (cgroups)

Container ohne Ressourcenbeschränkungen können die gesamte verfügbare CPU, den gesamten Arbeitsspeicher und alle E/A-Ressourcen verbrauchen und schließlich dein gesamtes Hostsystem zum Absturz bringen. Kontrollgruppen (cgroups) verhindern das, indem sie strenge Limits für die Ressourcennutzung setzen.

Leg erst mal Speichergrenzen fest, damit die Container nicht zu viel RAM verbrauchen:

docker run --memory=512m nginx

Du kannst auch die CPU-Nutzung begrenzen, um zu verhindern, dass ein Container die Rechenleistung beansprucht:

docker run --cpus=1.5 nginx

Bei Systemen mit hoher Festplatten-E/A-Auslastung solltest du die Lese-/Schreibgeschwindigkeit kontrollieren:

docker run --device-read-bps /dev/sda:1mb nginx

Du kannst auch mehrere Limits kombinieren, um die Ressourcen komplett zu kontrollieren:

docker run \
  --memory=1g \
  --cpus=2 \
  --pids-limit=100 \
  nginx

Um einheitliche Limits für alle Container zu haben, leg die Standardwerte in deiner daemon.json fest:

{
  "default-ulimits": {
    "nofile": {
      "Hard": 64000,
      "Name": "nofile",
      "Soft": 64000
    }
  }
}

Diese Limits verhindern, dass Ressourcen kaputt gehen, und sorgen dafür, dass sie fair zwischen Containern geteilt werden.

Richte diese Sicherheitsmaßnahmen einmal ein und schon wird es viel schwieriger, deine Docker-Umgebung zu hacken.

Möchtest du die Docker-Befehle für die tägliche Verwaltung richtig draufhaben? Mit diesen 18 wichtigen Docker-Befehlen bist du richtig produktiv.

Häufige Probleme lösen

Selbst wenn alles richtig installiert ist, kann es bei Docker zu Problemen kommen, die verhindern, dass Container richtig laufen. Hier sind die häufigsten Probleme und wie du sie schnell beheben kannst.

Berechtigungsfehler

Die meisten Probleme mit Docker-Berechtigungen kommen daher, dass dein Benutzer nicht die richtigen Zugriffsrechte für die Socket-Datei von Docker hat. Wenn du „ Got permission denied while trying to connect to the Docker daemon socket ” siehst, bist du noch nicht in der Docker-Gruppe.

Das passiert, weil Docker als Root läuft, aber einen Socket erstellt, auf den Mitglieder der Docker-Gruppe zugreifen können. Tritt der Gruppe bei:

sudo usermod -aG docker $USER

Du musst dich abmelden und wieder anmelden, damit die Änderung übernommen wird. Wenn du dich jetzt nicht abmelden willst, kannst du die Gruppe in deiner aktuellen Sitzung aktivieren:

newgrp docker

Dateiberechtigungsfehler in Containern sind anders, aber genauso häufig. Das passiert, wenn der Container-Prozess keine Dateien lesen oder schreiben kann, die du von deinem Host-System gemountet hast. Der Container läuft vielleicht mit einer anderen Benutzer-ID als der, der deine Dateien hat.

Schau mal, wer deine Dateien hat:

ls -la /path/to/your/files

Die meisten Docker-Container laufen standardmäßig mit der Benutzer-ID 1000. Wenn deine Dateien root oder einem anderen Benutzer gehören, ändere den Eigentümer:

sudo chown -R 1000:1000 /path/to/your/files

Wenn du SELinux (statt AppArmor) benutzt, werden möglicherweise andere Berechtigungsablehnungen in den Audit-Protokollen angezeigt. Die sind komplizierter, weil SELinux nicht nur anhand von Benutzer-IDs, sondern auch anhand von Sicherheitskontexten regelt, welche Prozesse auf was zugreifen dürfen.

Such nach aktuellen Zugriffsverletzungen:

sudo ausearch -m avc -ts recent

Fix SELinux Kontexte, indem du die Container-Verwaltung aktivierst und die richtigen Labels für deine Docker-Volumes wiederherstellst:

sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume

Serviceausfälle

Wenn Docker nicht startet oder immer abstürzt, musst du erst mal herausfinden, was das Problem ist, bevor du es beheben kannst. Der systemd-Dienststatus gibt dir einen schnellen Überblick:

sudo systemctl status docker

Hier siehst du, ob Docker läuft und ob es irgendwelche Fehlermeldungen gibt. Für eine detaillierte Fehlerbehebung solltest du aber die Live-Protokolle beobachten, während Docker versucht zu starten:

sudo journalctl -u docker.service -f

Ein häufiger Startfehler tritt auf, wenn Docker nicht ordnungsgemäß beendet wurde: “. Du wirst eine Fehlermeldung wie „Daemon konnte nicht gestartet werden: PID-Datei gefunden, stell sicher, dass Docker nicht läuft.“ sehen. Das heißt, es gibt noch eine alte Prozessdatei, die das Startskript durcheinanderbringt.

Lös die alte Datei und versuch's nochmal:

sudo rm /var/run/docker.pid
sudo systemctl start docker

Speicherprobleme sind auch oft der Grund für Probleme mit Daemons. Docker speichert alle Daten im Verzeichnis „ /var/lib/docker “. Wenn in diesem Verzeichnis nicht mehr genug Speicherplatz vorhanden ist oder es beschädigt wird, kann Docker nicht richtig starten.

Schau mal, wie viel Platz du hast:

df -h /var/lib/docker

Wenn du wenig Speicherplatz hast, lösche alte Container und Images, die du nicht mehr brauchst:

docker system prune -a

Netzwerkkonflikte können auch verhindern, dass Docker startet. Das passiert, wenn das Standard-Bridge-Netzwerk von Docker (normalerweise 172.17.0.0/16) mit deiner bestehenden Netzwerkkonfiguration nicht klarkommt. Es werden Fehlermeldungen angezeigt, dass Adressbereiche nicht verfügbar sind.

Behebe das Problem, indem du eine benutzerdefinierte Bridge-IP konfigurierst, die nicht mit deinem Netzwerk kollidiert. Bearbeiten /etc/docker/daemon.json:

{
  "bip": "192.168.1.1/24"
}

Nachdem du die Änderung vorgenommen hast, starte Docker neu, um die neue Netzwerkkonfiguration zu verwenden:

sudo systemctl restart docker

Probleme mit veraltetem Kernel

Docker braucht Linux-Kernel-Features für Containerisierung, Vernetzung und Sicherheit. Wenn dein Kernel zu alt ist, wirst du auf Probleme stoßen, die du nur durch ein Upgrade beheben kannst.

Überprüfe mit diesem Befehl, welche Kernel-Version du gerade benutzt:

uname -r

Docker braucht mindestens Kernel 3.10 für die grundlegenden Funktionen, aber für den Einsatz in der Produktion solltest du besser 4.0 oder neuer nehmen. Alles, was älter als 3.10 ist, funktioniert mit modernen Docker-Versionen einfach nicht mehr.

Das Aktualisieren deines Kernels unter Debian ist ganz einfach. Installier einfach das neueste Kernel-Paket:

sudo apt update
sudo apt install linux-image-amd64

Der neue Kernel ist erst nach einem Neustart deines Systems aktiv:

sudo reboot

Manchmal ist der Kernel aktuell genug, aber bestimmte Kernel-Module sind nicht geladen. Docker braucht bestimmte Module für Netzwerk- und Containerisierungsfunktionen. Es werden Fehlermeldungen angezeigt, dass Netzwerkschnittstellen nicht verfügbar sind oder Container nicht ordnungsgemäß gestartet werden können.

Lade die wichtigen Module einfach manuell:

sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat

Diese Module sollten automatisch geladen werden, aber wenn das nicht der Fall ist, füge sie dauerhaft zu deiner Systemkonfiguration hinzu:

echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules  
echo "iptable_nat" | sudo tee -a /etc/modules

Selbst mit einem aktuellen Kernel kann es zu Container-Laufzeitfehlern mit der Meldung „Operation not supported“ (Vorgang nicht unterstützt) kommen. Das heißt meistens, dass dein Kernel ohne bestimmte Funktionen kompiliert wurde, die Docker braucht. Leider gibt's keine Lösung für fehlende Kernel-Features – du brauchst einen richtig konfigurierten Kernel.

Die meisten Probleme bei der Docker-Installation hängen mit diesen drei Sachen zusammen: Benutzerrechte, Dienstkonfiguration oder Kernel-Kompatibilität. Behebe lieber das eigentliche Problem, statt nur die Symptome zu bearbeiten, dann läuft deine Docker-Umgebung viel stabiler.

Arbeitest du mit Datenbanken in Containern? Die PostgreSQL-Konfiguration in Docker ist einfacher als du denkst.

Docker deinstallieren

Manchmal musst du Docker komplett von deinem System löschen, egal ob du zu einer anderen Container-Laufzeitumgebung wechselst oder nach Konfigurationsproblemen neu anfangen willst. 

Bei diesem Vorgang geht es um mehr als nur das Löschen von Paketen – du solltest auch Daten und Systemänderungen bereinigen.

Entfernezuerst alle Docker-Pakete von deinem System. Der genaue Befehl hängt davon ab, wie du Docker ursprünglich installiert hast.

Wenn du die Installation über das offizielle Docker-Repository gemacht hast:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

Wenn du die Installation über das Standard-Repository von Debian gemacht hast:

sudo apt purge docker.io docker-compose

Dadurch werden die Pakete entfernt, aber Konfigurationsdateien und Abhängigkeiten, die andere Pakete möglicherweise noch benötigen, bleiben erhalten. Um auch diese zu entfernen:

sudo apt autoremove --purge

Löschdann das Datenverzeichnis von Docker “, wenn du alle Images, Container und Volumes loswerden willst. Dieser Schritt ist optional, wird aber für eine vollständige Bereinigung empfohlen.

Docker speichert standardmäßig alles im Verzeichnis „ /var/lib/docker “. Wenn du dieses Verzeichnis löschst, werden alle deine Container, Images, Netzwerke und Volumes endgültig gelöscht:

sudo rm -rf /var/lib/docker

Du solltest auch das Konfigurationsverzeichnis von Docker löschen:

sudo rm -rf /etc/docker

Mach weiter, indem du die Systemgruppen und Benutzer, die Docker während der Installation erstellt hat,aufräumst. Docker fügt deinem System die Gruppe „ docker “ hinzu und hat möglicherweise die Benutzerberechtigungen geändert.

Entferne die Docker-Gruppe:

sudo groupdel docker

Wenn du Benutzer zur Docker-Gruppe hinzugefügt hast, wird ihre Gruppenmitgliedschaft automatisch gelöscht, wenn du die Gruppe löschst. Du kannst aber auch bestimmte Benutzer manuell aus der Gruppe entfernen, bevor du sie löschst:

sudo gpasswd -d username docker

Dann entfernst du die systemd-Dienstdateien von Docker und die Socket-Dateien von Docker:

sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload

Zum Schluss überprüfe, ob noch Docker-Prozesse , die vielleicht noch laufen:

ps aux | grep docker

Wenn du welche findest, stoppe sie manuell:

sudo pkill -f docker

Nach diesen Schritten sollte Docker komplett von deinem System entfernt sein, ohne dass Dateien oder Konfigurationen zurückbleiben.

Suchst du nach Alternativen zu Docker? Probier erst mal andere Container-Plattformen aus, bevor du wechselst.

Fazit und bewährte Vorgehensweisen

Jetzt läuft Docker auf Debian, aber die Installation ist erst der Anfang. Wie du deine Docker-Umgebung einrichtest und pflegst, entscheidet darüber, ob du eine reibungslose Produktion hast oder nachts Containerprobleme beheben musst.

Du baust Multi-Plattform-Container für verschiedene Architekturen? Docker Buildx macht plattformübergreifende Builds echt einfach.

Wähle deine Installationsmethode entsprechend deinen Anforderungen aus. Das offizielle Docker-Repository ist für die meisten Produktionsumgebungen am besten geeignet, weil du damit die neuesten Funktionen und Sicherheitspatches bekommst. Aber bei Netzwerken mit Luftspalt oder wenn die Versionen alle gleich sein müssen, musst du die DEB-Datei vielleicht lieber manuell installieren.

Sichere deine Docker-Umgebung sofort. Aktiviere AppArmor oder SELinux für obligatorische Zugriffskontrollen, richte strenge Daemon-Einstellungen ein und nutze cgroups, um die Ressourcen von Containern zu begrenzen. Halte Docker mit automatischen Sicherheitsupdates auf dem neuesten Stand, aber probier sie erst mal in einer Testumgebung aus.

Für Anwendungen mit mehreren Containern solltest du Docker Compose verwenden. Anstatt komplizierte Befehle zum Verwalten von „ docker run “ zu verwenden, kannst du deinen Anwendungsstack einfach in YAML definieren.

Schau dir regelmäßig an, wie viel Speicherplatz auf der Festplatte drauf ist, und räum mal auf. Führ einfach „ docker system prune “ aus, um nicht mehr benötigte Images zu löschen und die Log-Rotation einzurichten, damit die Container nicht deine Festplatte vollmachen.

Wenn du mehr Infos brauchst, findest du in der offiziellen Dokumentation alles zu den Themen, die hier nichtangesprochen wurden. In der Docker-Dokumentation findest du alle Infos zu Netzwerken, Speichertreibern und Orchestrierung. Die Debian-Docker-Paketdokumentation erklärt, wie man das Paket einrichtet und was man beachten muss.

Docker auf Debian bietet dir eine stabile, leistungsstarke Plattform für containerisierte Anwendungen – aber nur, wenn du es sorgfältig konfigurierst und regelmäßig wartest.

Willst du mehr über Docker, Containerisierung und deren Anwendung in der Datenwissenschaft und im maschinellen Lernen erfahren? Diese DataCamp-Kurse sind genau das Richtige für dich:


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist mit Sitz in Kroatien. Top Tech Writer mit über 700 veröffentlichten Artikeln, die mehr als 10 Millionen Mal aufgerufen wurden. Buchautor von Machine Learning Automation with TPOT.

Häufig gestellte Fragen

Wie installiere ich Docker am besten auf Debian für den Einsatz in der Produktion?

Die offizielle Docker-Repository-Methode ist die beste Wahl für Produktionsumgebungen, weil sie die neuesten stabilen Versionen mit regelmäßigen Sicherheitsupdates bietet. Mit dieser Methode bekommst du alle neuen Funktionen und wichtigen Patches, die vielleicht nicht in den Standard-Repos von Debian verfügbar sind. Außerdem bekommst du automatische Updates über deinen Paketmanager, der deine Docker-Installation ohne manuelles Zutun sicher hält.

Muss ich mir Gedanken um die Sicherheit machen, wenn ich Docker auf Debian nutze?

Ja, die Sicherheit von Docker erfordert nach der Installation eine sorgfältige Konfiguration. Container nutzen den Host-Kernel, sodass ein angegriffener Container auf Host-Ressourcen zugreifen könnte, wenn er nicht richtig isoliert ist. Du solltest AppArmor oder SELinux für obligatorische Zugriffskontrollen aktivieren, Ressourcenbeschränkungen mit cgroups konfigurieren und Container nach Möglichkeit als Nicht-Root-Benutzer ausführen. Halte außerdem Docker auf dem neuesten Stand und füge keine Benutzer zur Docker-Gruppe hinzu, es sei denn, es ist unbedingt nötig, da dies Root-Rechte auf dem System gibt.

Kann ich Docker auf älteren Debian-Versionen nutzen?

Docker braucht Debian 10 (Buster) oder neuer, um mit den aktuellen Versionen der Docker Engine zu funktionieren. Ältere Versionen wie Debian 9 haben nicht die Kernel-Features und Paketabhängigkeiten, die moderne Docker braucht. Wenn du noch eine ältere Debian-Version hast, musst du erst mal dein System upgraden, weil es keine zuverlässige Lösung für die fehlende Kernel-Funktion gibt, die Docker für die Containerisierung und Vernetzung braucht.

Warum startet Docker nach der Installation nicht und wie behebe ich Probleme mit dem Daemon?

Docker-Daemon-Fehler haben meistens drei Ursachen: Speicherprobleme, Netzwerkkonflikte oder alte Prozessdateien von früheren Installationen. Schau mal, ob „ /var/lib/docker “ genug Speicherplatz hat, indem du „ df -h /var/lib/docker “ ausprobierst, und räum bei Bedarf mit „ docker system prune -a “ auf. Bei Netzwerkproblemen kann die Standard-Bridge-IP von Docker (172.17.0.0/16) mit deiner Netzwerkkonfiguration kollidieren, sodass du eine eigene Bridge-IP in der Datei „ /etc/docker/daemon.json “ einrichten musst. Wenn du die Fehlermeldung „pid file found“ siehst, lösche die alte Datei mit „ sudo rm /var/run/docker.pid “ und starte den Dienst neu.

Wie kann ich Docker und alle dazugehörigen Daten ordnungsgemäß von meinem Debian-System entfernen?

Um Docker komplett loszuwerden, musst du mehr machen als nur die Pakete deinstallieren – du musst auch die Datenverzeichnisse, Systemgruppen und Dienstdateien aufräumen. Fang damit an, die Docker-Pakete mit „ sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin “ zu löschen und dann das Datenverzeichnis mit „ sudo rm -rf /var/lib/docker “ (das löscht alle Container und Images dauerhaft). Lösche die Docker-Gruppe mit „ sudo groupdel docker “, lösche die systemd-Dienstdateien und überprüfe mit „ ps aux | grep docker “, ob noch Docker-Prozesse laufen. So hast du einen sauberen Start, wenn du die Container-Laufzeitumgebung neu installieren oder zu einer anderen wechseln musst.

Themen

Lerne mit DataCamp

Kurs

Einführung in Docker

4 Std.
37.6K
Dieser Einführungskurs stellt dir Docker als wichtiges Tool für Datenprofis vor und erläutert Container, Images und mehr in Docker.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Arten von KI-Agenten: Ihre Rollen, Strukturen und Anwendungen verstehen

Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.
Vinod Chugani's photo

Vinod Chugani

14 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen