1. Home
  2. Linux
  3. Docker
  4. Docker Engine unter Debian 13 installieren und einrichten

Docker Engine unter Debian 13 installieren und einrichten

Lesedauer: 12 Minuten

Einleitung und Zielsetzung

Docker ist eine Plattform zur Entwicklung, Bereitstellung und Ausführung von Anwendungen in sogenannten Containern. Container stellen Anwendungen einschließlich ihrer benötigten Bibliotheken, Laufzeitumgebungen und weiteren Abhängigkeiten in einer weitgehend isolierten Umgebung bereit.

Im Gegensatz zu klassischen virtuellen Maschinen benötigen Container kein eigenes Gastbetriebssystem mit separatem Kernel. Stattdessen nutzen sie den Kernel des Hostsystems. Die Isolation erfolgt unter Linux insbesondere durch Namespaces zur Trennung von Prozessen, Netzwerken und weiteren Systemressourcen sowie durch Control Groups (cgroups) zur Steuerung des Ressourcenverbrauchs.

Dieser Ansatz ermöglicht eine vergleichsweise ressourcenschonende Ausführung mehrerer Anwendungen auf einem gemeinsamen Host. Gleichzeitig lassen sich Anwendungen und ihre Abhängigkeiten weitgehend unabhängig voneinander verwalten, aktualisieren und bereitstellen.

Komponenten der Docker-Laufzeitumgebung

Für den Betrieb von Docker unter Linux werden mehrere Komponenten benötigt, die unterschiedliche Aufgaben übernehmen:

  • Docker Engine: Zentrale Plattform zur Verwaltung und Ausführung von Containern
  • Docker Daemon (dockerd): Hintergrunddienst, der Docker-Objekte und Container verwaltet
  • Docker CLI (docker): Kommandozeilenwerkzeug zur Kommunikation mit dem Docker-Daemon
  • containerd: Container-Laufzeitdienst, der unter anderem den Lebenszyklus von Containern verwaltet
  • Docker Buildx: Erweiterung zum Erstellen von Container-Images mit BuildKit
  • Docker Compose: Werkzeug zur Definition und Verwaltung zusammengehöriger Container-Anwendungen über YAML-Dateien

Docker Engine ist dabei nicht mit Docker Desktop gleichzusetzen. Docker Desktop ist eine zusätzliche Entwicklungsumgebung für Windows, macOS und Linux, die unter anderem eine grafische Benutzeroberfläche bereitstellt.

Auf einem Linux-Server wird üblicherweise Docker Engine direkt installiert und über die Kommandozeile verwaltet. Eine grafische Oberfläche ist dafür nicht erforderlich.

Ziel dieser Anleitung

Diese Anleitung beschreibt die Installation und grundlegende Einrichtung von Docker Engine auf einem Headless Debian-13-Server (Trixie) unter Verwendung des offiziellen Docker-Repositories.

Neben der eigentlichen Installation werden die benötigten Komponenten, die Einbindung der Paketquellen, die Integration in systemd sowie grundlegende Sicherheitsaspekte erläutert.

Abschließend wird die Funktionsfähigkeit der Docker-Laufzeitumgebung durch das Ausführen eines Testcontainers überprüft.

Als Ergebnis steht ein betriebsbereiter Docker-Host zur Verfügung, auf dem anschließend eigene Container und aus mehreren Diensten bestehende Anwendungen betrieben werden können.

Die weiterführende Verwaltung von Containern, Images, Netzwerken, Volumes und Docker-Compose-Projekten wird in separaten Artikeln behandelt.

Systemvoraussetzungen

Für die Installation von Docker Engine muss das Hostsystem bestimmte Anforderungen erfüllen. Neben einer unterstützten Linux-Distribution sind insbesondere die Prozessorarchitektur, administrative Berechtigungen und der Zugang zu den benötigten Paketquellen zu berücksichtigen.

Unterstütztes Betriebssystem

Docker Engine unterstützt die Debian-Versionen 12 (Bookworm) und 13 (Trixie). Als Prozessorarchitekturen werden unter anderem amd64 (x86-64), arm64, armhf und ppc64le unterstützt. Diese Anleitung verwendet Debian 13 (Trixie) auf einem x86-64-System.

Die installierte Betriebssystemversion überprüfen:

$ cat /etc/os-release

Die Kernelversion und die Prozessorarchitektur ermitteln:

$ uname -r
$ dpkg --print-architecture
  • Betriebssystem: Debian GNU/Linux 13.7 (Trixie)
  • Kernel: 6.12.113+deb13-amd64
  • Architektur: amd64
  • Hostname: docker-host-01

Docker verwendet zur Container-Isolation Funktionen des Linux-Kernels, insbesondere Namespaces und Control Groups (cgroups). Ein eigener Kernel innerhalb der Container ist daher nicht erforderlich.

Administrative Berechtigungen und Netzwerkzugang

Für die Installation werden Root-Berechtigungen beziehungsweise ein Benutzerkonto mit sudo-Berechtigung benötigt. Das Hostsystem muss außerdem die Debian-Paketquellen und das offizielle Docker-Repository unter download.docker.com erreichen können. Für den späteren Download von Container-Images ist zusätzlich der Zugriff auf entsprechende Container-Registries erforderlich, beispielsweise Docker Hub.

Vorbereitung der Paketverwaltung

Docker Engine wird in dieser Anleitung aus dem offiziellen Docker-Repository installiert. Damit APT die Pakete über eine verschlüsselte Verbindung herunterladen und ihre Authentizität überprüfen kann, werden zunächst die erforderlichen Werkzeuge installiert und der öffentliche Signaturschlüssel des Docker-Repositories hinterlegt.

Benötigte Pakete installieren

$ sudo apt install ca-certificates curl

ca-certificates stellt eine Sammlung vertrauenswürdiger Zertifizierungsstellen (Certificate Authorities, CA) bereit, die unter anderem zur Überprüfung von TLS-Zertifikaten bei HTTPS-Verbindungen verwendet wird.

curl ist ein Kommandozeilenwerkzeug zum Übertragen von Daten über verschiedene Netzwerkprotokolle. Es wird hier verwendet, um den öffentlichen Signaturschlüssel des Docker-Repositories herunterzuladen.

Verzeichnis für Signaturschlüssel vorbereiten

APT kann Signaturschlüssel für externe Paketquellen im Verzeichnis /etc/apt/keyrings verwalten. Das Verzeichnis wird bei Bedarf angelegt und mit den vorgesehenen Berechtigungen versehen:

$ sudo install -m 0755 -d /etc/apt/keyrings

Docker-Signaturschlüssel hinterlegen

Öffentliche Signaturschlüssel von Docker herunterladen:

$ 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

Der Schlüssel wird später über die Direktive Signed-By ausdrücklich dem Docker-Repository zugeordnet. Dadurch wird vermieden, dass er pauschal als vertrauenswürdig für sämtliche APT-Paketquellen gilt.

Offizielles Docker-Repository einrichten

Docker stellt ein eigenes APT-Repository bereit, über das Docker Engine und die zugehörigen Komponenten installiert und aktualisiert werden können. Für diese Anleitung wird das offizielle Docker-Repository verwendet.

Die Paketquelle wird unter Debian 13 im DEB822-Format konfiguriert. Dabei erhält jedes zusätzliche Repository eine eigene Konfigurationsdatei im Verzeichnis /etc/apt/sources.list.d/.

Docker-Repository hinzufügen

/etc/apt/sources.list.d/docker.sources erstellen:

$ sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: trixie
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Die Datei definiert das offizielle Docker-Repository für Debian 13 (Trixie) auf der Architektur amd64. Über die Direktive Signed-By wird der zuvor hinterlegte Signaturschlüssel ausdrücklich dieser Paketquelle zugeordnet. APT verwendet ihn zur Überprüfung der Repository-Signaturen.

Paketlisten aktualisieren

$ sudo apt update

Bei erfolgreicher Einbindung erscheint das Docker-Repository in der Ausgabe:

Holen: https://download.docker.com/linux/debian trixie InRelease
Holen: https://download.docker.com/linux/debian trixie/stable amd64 Packages

Verfügbarkeit von Docker Engine überprüfen

Prüfen ob APT die Docker-Pakete aus dem offiziellen Repository beziehen kann:

$ apt-cache policy docker-ce

Die Ausgabe zeigt die verfügbaren Paketversionen, deren Herkunft und den vorgesehenen Installationskandidaten. Auf dem Testsystem wurde beispielsweise folgender Installationskandidat ermittelt:

docker-ce:
  Installiert:           (keine)
  Installationskandidat: 5:29.9.1-1~debian.13~trixie

Damit ist das offizielle Docker-Repository erfolgreich eingebunden. Die Installation von Docker Engine kann anschließend über die reguläre APT-Paketverwaltung erfolgen.

Docker Engine und Komponenten installieren

Nachdem das offizielle Docker-Repository eingerichtet wurde, können Docker Engine und die zugehörigen Komponenten über die APT-Paketverwaltung installiert werden.

Installation der Docker-Pakete

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

Folgende Komponenten installiert:

  • docker-ce: Docker Engine einschließlich des Docker-Daemons (dockerd) zur Verwaltung von Images, Containern und Netzwerken
  • docker-ce-cli: Kommandozeilenwerkzeug (docker) zur Steuerung des Docker-Daemons
  • containerd.io: Container-Laufzeitumgebung zur Verwaltung des Container-Lebenszyklus
  • docker-buildx-plugin: Erweiterung zum Erstellen von Container-Images mit BuildKit
  • docker-compose-plugin: Erweiterung zur Definition und Verwaltung von Anwendungen aus mehreren Containern

Automatischer Start der Docker-Dienste

Nach erfolgreicher Installation wird Docker unter Debian üblicherweise automatisch als systemd-Dienst gestartet und für den Systemstart aktiviert.

Der zentrale Dienst docker.service stellt den Docker-Daemon bereit. Dieser kommuniziert mit dem ebenfalls installierten Dienst containerd.service, der die Ausführung der Container unterstützt.

Die Verwaltung erfolgt über die Docker-CLI, die standardmäßig über den Unix-Socket /run/docker.sock mit dem Docker-Daemon kommuniziert.

Eine zusätzliche manuelle Konfiguration ist für den grundlegenden Betrieb zunächst nicht erforderlich.

Installation und Dienste überprüfen

Nach der Installation wird überprüft, ob Docker Engine ordnungsgemäß gestartet wurde und die benötigten Komponenten verfügbar sind.

Status der Docker-Dienste prüfen

$ sudo systemctl status docker

Bei erfolgreichem Start sollte die Ausgabe unter anderem folgende Informationen enthalten:

● docker.service - Docker Application Container Engine
     Loaded: loaded (...; enabled; preset: enabled)
     Active: active (running)
     Main PID: 2974 (dockerd)

Der Status active (running) bestätigt, dass der Docker-Daemon ausgeführt wird. enabled bedeutet, dass der Dienst für den automatischen Start beim Systemstart aktiviert ist.

Zusätzlich kann der Status der Container-Laufzeitumgebung geprüft werden:

$ sudo systemctl status containerd

Auch dieser Dienst sollte den Status active (running) und enabled aufweisen.

Docker-Protokolle überprüfen

Sollte der Docker-Dienst nicht ordnungsgemäß starten oder Fehler melden, können seine Protokolle über das systemd-Journal eingesehen werden:

$ sudo journalctl -u docker -b --no-pager

Entscheidend für die erfolgreiche Initialisierung sind unter anderem folgende Protokolleinträge:

Completed buildkit initialization
Daemon has completed initialization
API listen on /run/docker.sock

Grundlegende Sicherheitseinstellungen

Benutzerberechtigungen und Docker-Socket

Gruppenmitgliedschaften des Benutzers anzeigen:

$ id <Benutzer>

Berechtigungen des Docker-Sockets anzeigen:

$ ls -l /run/docker.sock
srw-rw---- 1 root docker 0 18. Okt 15:10 /run/docker.sock

Der Docker-Daemon wird standardmäßig mit Root-Rechten ausgeführt. Der Zugriff auf seinen Unix-Socket (/run/docker.sock) ermöglicht dadurch weitreichende Eingriffe in das Hostsystem, bis hin zur Erlangung vollständiger Root-Rechte. Da der Socket üblicherweise dem Benutzer root und der Gruppe docker gehört, erhalten Mitglieder dieser Gruppe faktisch administrative Berechtigungen auf dem gesamten Host. Aus Sicherheitsgründen sollte deshalb auf eine unnötige Mitgliedschaft in der Gruppe docker verzichtet werden. Stattdessen werden Docker-Verwaltungsbefehle über sudo ausgeführt, wodurch der privilegierte Zugriff an die bestehenden sudo-Berechtigungen gebunden bleibt.

Funktionstest

Nach erfolgreicher Installation und Überprüfung des Docker-Dienstes wird die Funktionsfähigkeit der Laufzeitumgebung durch das Ausführen eines Testcontainers überprüft.

Testcontainer ausführen

Docker stellt mit hello-world ein einfaches Test-Image bereit, das die grundlegende Kommunikation zwischen Docker-CLI, Docker-Daemon und Container-Laufzeitumgebung überprüft.

Der Testcontainer wird mit folgendem Befehl gestartet:

$ sudo docker run hello-world

Ist das Image lokal noch nicht vorhanden, wird es automatisch von Docker Hub heruntergeladen. Anschließend erstellt Docker daraus einen Container, führt das enthaltene Programm aus und gibt unter Anderem eine Bestätigung aus:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Nach der Ausgabe beendet sich der Container automatisch.

Containerstatus überprüfen

Mit folgendem Befehl werden die aktuell laufenden Container angezeigt:

$ sudo docker ps

Da der hello-world-Container sein Programm bereits beendet hat, erscheint er nicht in dieser Übersicht. Um auch beendete Container anzuzeigen, wird die Option -a verwendet:

$ sudo docker ps -a

Beispielausgabe:

CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
941d4cd8521d   hello-world   "/hello"   37 seconds ago   Exited (0) 36 seconds ago             hungry_mclean

Der Status Exited (0) bestätigt, dass der Containerprozess erfolgreich beendet wurde.

Heruntergeladenes Image überprüfen

Die lokal vorhandenen Container-Images werden mit folgendem Befehl angezeigt:

$ sudo docker image ls

Beispielausgabe:

IMAGE                ID             DISK USAGE   CONTENT SIZE   EXTRA
hello-world:latest   11a3eb1597e8       25.9kB         9.49kB    U

Ein Image dient als Vorlage für die Erstellung von Containern. Aus demselben Image können mehrere voneinander unabhängige Container erzeugt werden. Das Image bleibt auch nach dem Beenden eines Containers lokal gespeichert und kann für weitere Containerstarts wiederverwendet werden.

Abschluss und Aktualisierung

Die Installation der Docker Engine unter Debian 13 ist abgeschlossen. Docker wird als systemd-Dienst betrieben und beim Systemstart automatisch gestartet. Die Laufzeitumgebung umfasst Docker Engine, containerd sowie die Erweiterungen Docker Buildx und Docker Compose.

Die erfolgreiche Ausführung des hello-world-Containers bestätigt die grundlegende Funktionsfähigkeit der Installation.

Aktualisierung der Docker-Komponenten

Da Docker Engine über das offizielle APT-Repository installiert wurde, können verfügbare Updates über die reguläre Paketverwaltung eingespielt werden:

$ sudo apt update
$ sudo apt upgrade

Dabei werden neben Docker gegebenenfalls auch andere installierte Systempakete aktualisiert.

Bei einer Aktualisierung der Docker Engine können der Docker-Daemon neu gestartet und laufende Container unterbrochen werden. Updates sollten deshalb auf produktiven Systemen in einem geeigneten Wartungsfenster durchgeführt werden.

Aktualisierung der Docker-Images

Docker-Images werden unabhängig von der Docker Engine und der Paketverwaltung des Hostsystems aktualisiert. Ein apt upgrade aktualisiert daher keine bereits heruntergeladenen Container-Images.

Die Aktualisierung eines Images erfolgt durch erneutes Herunterladen aus der jeweiligen Container-Registry. Am Beispiel des zuvor verwendeten hello-world-Images:

$ sudo docker pull hello-world:latest

Docker prüft, ob die aktuelle Version des Images bereits lokal vorhanden ist. Falls eine neuere Version verfügbar ist, werden die erforderlichen Image-Daten heruntergeladen. Andernfalls meldet Docker, dass das Image bereits aktuell ist.

Mit folgendem Befehl kann das heruntergeladene Image angezeigt werden:

$ sudo docker image ls

Wichtig: Die Aktualisierung eines Images verändert keine bereits vorhandenen Container. Diese verwenden weiterhin das Image, aus dem sie ursprünglich erstellt wurden. Um eine aktualisierte Image-Version zu verwenden, muss ein neuer Container erstellt werden.

Beim Testcontainer hello-world genügt dazu die erneute Ausführung:

$ sudo docker run hello-world

Dabei wird ein neuer Container aus dem lokal vorhandenen Image erstellt und ausgeführt. Bereits vorhandene Container bleiben unverändert bestehen.

Bei dauerhaft betriebenen Anwendungen erfolgt die Aktualisierung üblicherweise durch das kontrollierte Neuerstellen der Container, beispielsweise mithilfe von Docker Compose. Die Aktualisierung solcher Anwendungen sowie der Umgang mit persistenten Daten werden in separaten Artikeln behandelt.

Befehlszeilenreferenz

Die folgenden Kommandos dienen zur Überprüfung der Docker-Installation sowie zur grundlegenden Verwaltung von Images und Containern.

Docker Engine und Dienste

KommandoFunktion
sudo systemctl status dockerStatus des Docker-Daemons anzeigen
sudo systemctl start dockerDocker-Daemon starten
sudo systemctl stop dockerDocker-Daemon stoppen
sudo systemctl restart dockerDocker-Daemon neu starten
sudo journalctl -u docker -bDocker-Dienstprotokolle anzeigen
sudo docker versionInstallierte Docker-Versionen anzeigen

Images und Container

KommandoFunktion
sudo docker run hello-worldTestcontainer erstellen und ausführen
sudo docker psLaufende Container anzeigen
sudo docker ps -aAlle Container einschließlich beendeter anzeigen
sudo docker image lsLokal gespeicherte Images anzeigen
sudo docker pull hello-world:latestImage herunterladen bzw. aktualisieren
sudo docker start <Container>Vorhandenen Container starten
sudo docker stop <Container>Laufenden Container stoppen
sudo docker rm <Container>Gestoppten Container entfernen

Die Platzhalter <Container> sind durch den jeweiligen Containernamen oder die Container-ID zu ersetzen.

Beispiel:

$ sudo docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
e37ade7c0ee2   hello-world   "/hello"   15 seconds ago   Exited (0) 14 seconds ago             elated_wiles
$ sudo docker start elated_wiles
$ sudo docker start e37ade7c0ee2

Loading

Updated on 25. Oktober 2026
Was this article helpful?

Related Articles