Docker ist eine Software, mit der Anwendungen in sogenannten Containern betrieben werden. Ein Container enthält die Anwendung samt allen Bibliotheken und Einstellungen, die sie benötigt. Dadurch läuft sie auf jedem Server mit Docker gleich, unabhängig davon, welche Linux-Distribution installiert ist. Dieser Artikel erklärt die wichtigsten Begriffe, zeigt die Unterschiede zu virtuellen Maschinen und hilft Ihnen bei der Entscheidung, ob Docker für Ihr Projekt passt.
Das Problem, das Docker löst
Klassisch installiert man Software direkt auf dem Server: Webserver, PHP, Datenbank, Erweiterungen. Jede Anwendung bringt eigene Anforderungen an Versionen mit. Möchten Sie zwei Anwendungen betreiben, die unterschiedliche PHP-Versionen brauchen, wird es schnell kompliziert. Updates des Betriebssystems können außerdem Abhängigkeiten verändern und Anwendungen unerwartet beschädigen.
Docker trennt die Anwendungen voneinander. Jede läuft in ihrem eigenen Container mit genau den Versionen, die sie braucht. Der Server selbst bleibt schlank und muss nur Docker bereitstellen.
Die wichtigsten Begriffe
Image
Ein Image ist eine unveränderliche Vorlage, vergleichbar mit einem Installationspaket. Es enthält ein minimales Dateisystem, die Anwendung und ihre Abhängigkeiten. Images werden meist aus öffentlichen Registries wie Docker Hub oder der GitHub Container Registry geladen, zum Beispiel nginx:1.27 oder postgres:16. Der Teil nach dem Doppelpunkt ist der Tag und bezeichnet meist die Version.
Container
Ein Container ist eine laufende Instanz eines Images. Aus einem Image können Sie beliebig viele Container starten. Wird ein Container gelöscht, verschwinden alle Änderungen, die in ihm gemacht wurden, sofern sie nicht in einem Volume liegen.
Volume
Volumes speichern Daten dauerhaft außerhalb des Containers, etwa Datenbankdateien oder Uploads. So können Sie einen Container durch eine neuere Version ersetzen, ohne Daten zu verlieren.
Port-Freigabe
Container haben ein eigenes, internes Netzwerk. Damit ein Dienst von außen erreichbar ist, wird ein Port des Servers an einen Port des Containers weitergeleitet, zum Beispiel 8080:80.
Docker Compose
Mit Docker Compose beschreiben Sie mehrere zusammengehörige Container in einer Datei namens compose.yaml. Eine typische Webanwendung besteht aus Anwendung, Datenbank und eventuell einem Cache. Mit einem einzigen Befehl starten, stoppen oder aktualisieren Sie alle gemeinsam.
Ein einfaches Beispiel
Dieser Befehl startet einen nginx-Webserver und macht ihn auf Port 8080 erreichbar:
docker run -d --name web -p 8080:80 nginx:1.27
Dieselbe Anwendung als Compose-Datei:
services:
web:
image: nginx:1.27
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
Gestartet wird sie mit docker compose up -d im selben Verzeichnis.
Container oder virtuelle Maschine?
| Container | Virtuelle Maschine | |
|---|---|---|
| Betriebssystem | teilt sich den Kernel mit dem Host | eigener, vollständiger Kernel |
| Startzeit | Sekunden | eine bis mehrere Minuten |
| Ressourcenbedarf | gering | höher, eigener RAM und Speicher |
| Isolation | gut, aber geringer als bei einer VM | sehr stark |
| Windows-Software | nicht auf einem Linux-Host | ja |
In der Praxis ergänzen sich beide: Ein vServer ist eine virtuelle Maschine, und auf ihm laufen Ihre Docker-Container. So haben Sie die starke Trennung zu anderen Kunden und zugleich die Flexibilität von Containern.
Vorteile von Docker
- Reproduzierbar: Die Compose-Datei beschreibt die komplette Umgebung. Ein Umzug auf einen neuen Server ist schnell erledigt.
- Einfache Updates: Neues Image laden, Container neu starten. Funktioniert eine Version nicht, wechseln Sie zurück zum vorherigen Tag.
- Große Auswahl: Für fast jede bekannte Open-Source-Software gibt es offizielle Images.
- Saubere Trennung: Anwendungen beeinflussen sich nicht gegenseitig.
Worauf Sie achten sollten
- Backups: Sichern Sie die Volumes und die Compose-Dateien. Die Container selbst müssen nicht gesichert werden.
- Firewall: Docker schreibt eigene Firewall-Regeln. Freigegebene Ports sind dadurch auch dann erreichbar, wenn eine Firewall wie UFW sie eigentlich sperren würde. Binden Sie interne Dienste deshalb an
127.0.0.1, zum Beispiel127.0.0.1:5432:5432. - Feste Versionen: Verwenden Sie konkrete Tags statt
latest. So bestimmen Sie selbst, wann ein Update eingespielt wird. - Vertrauenswürdige Images: Nutzen Sie offizielle Images oder solche bekannter Projekte.
Für wen eignet sich Docker?
Docker lohnt sich, sobald Sie mehr als eine Anwendung auf einem Server betreiben oder Software einsetzen, die offiziell als Container ausgeliefert wird. Beispiele sind Monitoring-Tools, Nextcloud, Wiki-Systeme oder eigene Webanwendungen. Für eine einzelne klassische WordPress-Seite ist ein Webhosting-Paket oft die einfachere Wahl.
Wie Sie Docker auf Ihrem Server installieren, zeigt unser Artikel Docker und Docker Compose unter Debian und Ubuntu installieren. Einen passenden Server finden Sie bei unseren vServern.
