Wer sich intensiver mit Linux, Servern oder moderner Softwareentwicklung beschäftigt, stößt früher oder später auf Docker. Kaum eine andere Technologie hat den Betrieb von Anwendungen in den vergangenen Jahren so stark verändert. Anstatt Programme direkt auf einem Betriebssystem zu installieren und dabei unzählige Abhängigkeiten zu berücksichtigen, laufen Anwendungen heute häufig in isolierten Containern. Diese Container bringen alles mit, was sie zum Betrieb benötigen, und lassen sich innerhalb weniger Sekunden starten, stoppen oder vollständig ersetzen.
Gerade in Kombination mit einem Raspberry Pi entsteht daraus ein äußerst leistungsfähiger Heimserver. Dank seines geringen Stromverbrauchs eignet sich der kleine Einplatinencomputer hervorragend für den dauerhaften Betrieb. Gleichzeitig ist Docker ressourcenschonend genug, um selbst auf einem Raspberry Pi mehrere Dienste parallel bereitzustellen. Ob Passwortmanager, Git-Server, Medienserver, Datenbanken oder Entwicklungsumgebungen – nahezu jede moderne Open-Source-Anwendung steht mittlerweile als Docker-Container zur Verfügung.
In meinem eigenen Homelab ist Docker mittlerweile einer der wichtigsten Bestandteile geworden. Statt jedes Projekt einzeln zu installieren, verwalte ich nahezu alle Dienste über Container. Das spart Zeit, vereinfacht Updates und sorgt dafür, dass sich ein Server jederzeit reproduzierbar neu aufsetzen lässt.
Was ist Docker eigentlich?
Docker ist eine Plattform zur Containerisierung von Anwendungen. Ein Container enthält neben der eigentlichen Software sämtliche Bibliotheken, Laufzeitumgebungen und Konfigurationen, die zum Betrieb notwendig sind. Dadurch läuft dieselbe Anwendung auf unterschiedlichen Systemen nahezu identisch.
Der entscheidende Unterschied zu virtuellen Maschinen besteht darin, dass Container keinen eigenen Kernel mitbringen. Sie nutzen den Linux-Kernel des Hostsystems gemeinsam und benötigen dadurch deutlich weniger Arbeitsspeicher und Rechenleistung. Während eine virtuelle Maschine oft mehrere Gigabyte Speicher verbraucht und erst vollständig booten muss, startet ein Docker-Container meist innerhalb weniger Sekunden.
Gerade auf ressourcenbegrenzter Hardware wie einem Raspberry Pi ist dieser Unterschied enorm. Selbst ein Raspberry Pi 4 mit 4 GB RAM kann problemlos mehrere Container gleichzeitig betreiben.
Warum eignet sich der Raspberry Pi so gut?
Ein Raspberry Pi verbraucht je nach Modell häufig nur drei bis acht Watt Strom. Selbst wenn er rund um die Uhr läuft, entstehen nur geringe Stromkosten. Gleichzeitig verfügen aktuelle Modelle über ausreichend Rechenleistung, Gigabit-Ethernet und schnelle USB-3-Anschlüsse für SSDs.
Dadurch entsteht ein kleiner Server, der kaum Platz benötigt, nahezu lautlos arbeitet und trotzdem viele Aufgaben übernehmen kann. Für private Projekte oder kleine Teams ist diese Kombination ideal.
Besonders der Raspberry Pi 5 bietet gegenüber seinen Vorgängern nochmals deutlich mehr CPU-Leistung und eignet sich hervorragend als Docker-Host. Aber auch ältere Raspberry Pi 4 leisten in vielen Szenarien noch hervorragende Dienste.
Die Installation
Als Betriebssystem empfiehlt sich Raspberry Pi OS Lite oder eine andere schlanke Linux-Distribution. Nach der Installation werden zunächst alle Pakete aktualisiert:
sudo apt update
sudo apt full-upgrade -y
Anschließend lässt sich Docker bequem über das offizielle Installationsskript installieren:
curl -fsSL https://get.docker.com | sh
Danach wird der aktuelle Benutzer zur Docker-Gruppe hinzugefügt:
sudo usermod -aG docker $USER
Nach einer erneuten Anmeldung können Docker-Befehle ohne sudo ausgeführt werden.
Ob die Installation erfolgreich war, lässt sich einfach prüfen:
docker run hello-world
Erscheint die entsprechende Begrüßungsmeldung, ist Docker einsatzbereit.
Docker Compose – Mehrere Container gemeinsam verwalten
Während einzelne Container schnell gestartet sind, bestehen viele Anwendungen aus mehreren Komponenten. Ein Webserver benötigt beispielsweise zusätzlich eine Datenbank und eventuell einen Reverse Proxy. Hier kommt Docker Compose ins Spiel.
Mit einer einzigen YAML-Datei werden sämtliche Container, Netzwerke und Speicherbereiche beschrieben. Ein kompletter Server lässt sich anschließend mit einem einzigen Befehl starten.
Ein einfaches Beispiel könnte so aussehen:
services:
nginx:
image: nginx:latest
ports:
- "80:80"
mariadb:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: geheim
Mit folgendem Befehl werden anschließend alle Dienste gleichzeitig gestartet:
docker compose up -d
Ebenso einfach können sämtliche Container später wieder beendet werden:
docker compose down
Dieses Prinzip macht Docker besonders attraktiv. Statt lange Installationsanleitungen zu dokumentieren, genügt häufig eine einzige Compose-Datei.
Persistente Daten
Ein häufiger Irrtum besteht darin anzunehmen, dass Docker automatisch alle Daten dauerhaft speichert. Tatsächlich sind Container bewusst flüchtig aufgebaut. Werden sie gelöscht, verschwinden auch ihre internen Daten.
Deshalb verwendet Docker sogenannte Volumes oder Bind Mounts. Dabei werden wichtige Verzeichnisse außerhalb des Containers gespeichert und bleiben auch nach Updates oder Neuinstallationen erhalten.
Ein typisches Beispiel sieht so aus:
volumes:
- ./data:/var/lib/mysql
Die Datenbank speichert ihre Inhalte dann im lokalen Verzeichnis data, unabhängig vom eigentlichen Container.
Welche Anwendungen laufen besonders gut?
Mittlerweile existieren Tausende fertige Docker-Images. Viele davon lassen sich innerhalb weniger Minuten produktiv einsetzen.
Sehr beliebt sind beispielsweise:
- Nextcloud für private Cloudspeicher
- Jellyfin als Medienserver
- Gitea für Git-Repositories
- Grafana für Dashboards
- Prometheus zur Überwachung
- Pi-hole als Werbeblocker
- Home Assistant für Smart Home
- Vaultwarden als Passwortmanager
- Uptime Kuma zur Verfügbarkeitsüberwachung
- Portainer zur grafischen Docker-Verwaltung
Durch Docker beeinflussen sich diese Anwendungen kaum gegenseitig. Ein fehlerhaftes Update einer Anwendung gefährdet normalerweise nicht den Rest des Systems.
Netzwerke und Sicherheit
Docker erstellt standardmäßig eigene virtuelle Netzwerke. Dadurch können Container untereinander kommunizieren, ohne direkt im lokalen Heimnetz sichtbar zu sein. Erst wenn bestimmte Ports explizit freigegeben werden, sind Dienste von außen erreichbar.
Für produktive Umgebungen empfiehlt sich zusätzlich ein Reverse Proxy wie Nginx Proxy Manager oder Traefik. Dadurch lassen sich HTTPS-Zertifikate automatisch verwalten und mehrere Anwendungen sauber unter unterschiedlichen Domains bereitstellen.
Ebenso sinnvoll ist es, Docker niemals direkt über das Internet erreichbar zu machen. Stattdessen sollte der Zugriff beispielsweise über Tailscale oder WireGuard erfolgen. So bleiben Verwaltungsoberflächen und sensible Dienste ausschließlich innerhalb des eigenen VPNs verfügbar.
Updates ohne großen Aufwand
Ein weiterer großer Vorteil von Docker ist die einfache Aktualisierung. Meist genügt es, das aktuelle Image herunterzuladen und den Container neu zu starten:
docker compose pull
docker compose up -d
Der eigentliche Container wird dabei ersetzt, während die gespeicherten Daten erhalten bleiben.
Für automatische Updates nutzen viele Administratoren zusätzliche Werkzeuge wie Watchtower. Dennoch empfiehlt es sich, Updates zunächst bewusst durchzuführen und vorher ein Backup der Daten anzulegen.
Warum Docker heute fast unverzichtbar ist
Vor einigen Jahren bestand ein Linux-Server häufig aus einer Vielzahl manuell installierter Programme. Jede Anwendung brachte ihre eigenen Konfigurationsdateien, Abhängigkeiten und Besonderheiten mit sich. Ein Serverwechsel oder eine Neuinstallation bedeutete oft viele Stunden Arbeit.
Docker hat diese Arbeitsweise grundlegend verändert. Anwendungen werden heute als reproduzierbare Bausteine betrachtet. Ein kompletter Server lässt sich innerhalb weniger Minuten aus einer Sammlung von Compose-Dateien wiederherstellen. Genau deshalb setzen mittlerweile sowohl große Unternehmen als auch private Homelabs auf Container.
Der Raspberry Pi ist dafür eine nahezu ideale Plattform. Er arbeitet leise, stromsparend und zuverlässig rund um die Uhr. Zusammen mit Docker entsteht daraus ein flexibler Heimserver, der sich jederzeit erweitern lässt – vom kleinen Dateiserver bis hin zur vollständigen Self-Hosting-Plattform mit Dutzenden verschiedener Dienste. Für alle, die tiefer in Linux, Serveradministration oder moderne Softwareentwicklung einsteigen möchten, gehört Docker deshalb zu den wichtigsten Werkzeugen überhaupt.
nerduniversum.de