Docker Health Checks verstehen – Basis für stabile Container (Teil 1 der Serie)
Einleitung
Container sind schnell, portabel und leichtgewichtig – aber wie können der Status und die Verfügbarkeit geprüft/überwacht werden? Die Antwort darauf liefern sogenannte Docker Health Checks. Dieser erste Teil dieser Serie legt den Grundstein: hier wird erklärt, was ein Health Check ist, wie er funktioniert und warum er in jeder produktionsnahen Umgebung Pflicht sein sollte.
Was ist ein Docker Health Check?
Ein Health Check ist eine über Docker definierte Methode, um den Zustand eines Containers aus Sicht des Containers selbst zu beurteilen. Anders als das reine "Läuft der Prozess noch?" erlaubt der Health Check eine inhaltliche Prüfung, z. B.:
- Ist der Webserver responsive?
- Ist die Datenbankverbindung verfügbar?
- Gibt der Service-Endpoint einen gültigen Status zurück?
Docker ruft in konfigurierten Intervallen ein Kommando im Container auf und setzt den internen Status auf:
- healthy
- unhealthy
- (initial: starting)
Dieser Status ist via docker inspect
oder docker ps
sichtbar.
Health Check definieren: So geht's
Die Definition erfolgt im Dockerfile
über den Befehl HEALTHCHECK
:
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost/health || exit 1
Erklärung der Parameter:
interval
: Wie oft soll geprüft werden?timeout
: Wie lange darf der Check dauern?start-period
: Wartezeit nach dem Start, bevor geprüft wirdretries
: Wie viele Fehlversuche führen zu "unhealthy"?
CMD gibt das Kommando an, das den Zustand prüft. Liefert es 0
zurück, ist alles OK.
Beispiel: Einfache Web-API prüfen
HEALTHCHECK CMD curl -sf http://localhost:8080/health || exit 1
Dieser Aufruf erwartet, dass /health
den HTTP-Status 200 zurückgibt.
Sichtbarkeit und Auswertung
docker ps --format 'table {{.Names}}\t{{.Status}}'
Beispielausgabe:
NAME STATUS
webapi Up 2 minutes (healthy)
Oder detailliert:
docker inspect --format='{{json .State.Health}}' <container-id>
Wichtige Hinweise
- Ein Health Check beeinflusst nicht automatisch das Verhalten des Containers. Docker startet ihn nicht neu bei "unhealthy".
- Die Restart-Policy greift nur, wenn der Hauptprozess abstürzt.
- Der Health Status kann aber über externe Tools (Watchtower, eigene Skripte, Portainer) ausgewertet und verarbeitet werden.
Fazit & Ausblick
Health Checks sind ein essenzielles Werkzeug, um in Container-Umgebungen automatisiert Qualität zu sichern und Störungen frühzeitig zu erkennen. Der nächste Teil zeigt, wie Health Checks konkret im Docker Swarm eingesetzt werden und welche Besonderheiten dabei zu beachten sind.
Tipp für die Praxis:
Nutze Health Checks nicht inflationär – setze sie gezielt für geschäftskritische oder schwer beobachtbare Komponenten ein.
Bonus: Im GitHub-Repo [verlinkt im nächsten Teil] findest du Healthcheck-Snippets für typische Dienste wie .Net Web API, Datenbanken, Redis oder Nginx.
Nächster Teil:
"Health Checks in Docker Swarm: Integration, Sichtbarkeit und Automatisierung"