Serie: Podman-Bausteine – Healthchecks (Teil 6)

  indibart   Lesezeit: 3 Minuten Auf Mastodon ansehen

Der Artikel erklärt das Konzept von Healthchecks (periodischer Befehl prüft Container-Gesundheit via Exit-Code) und zeigt, wie du sie über `--health-cmd`/`HealthCmd=` sowie Intervall, Retries und Timeout konfigurierst.

serie: podman-bausteine – healthchecks (teil 6)

Eine Tutorialreihe zum Einsatz von Podman: Anwendung, Vorteile und Funktionsweise.

Inhaltsverzeichnis

  1. Teil: Einleitung und Installation
  2. Teil: Podman CLI
  3. Teil: Wie funktioniert die Restart-Policy? Oder: Podman hat keinen Daemon
  4. Teil: Quadlets
  5. Teil: Updates
  6. Teil: Healthchecks
  7. Teil: Ports publishing – rootful & rootless
  8. Teil: Volumes & Mounts
  9. Teil: Netzwerk: Kommunikation zwischen Containern
  10. Teil: Capabilities

Einleitung

Im letzten Teil haben wir gesehen, dass Podmans automatischer Rollback bei einem missglückten Update nur zuverlässig funktioniert, wenn Podman weiss, wann ein Container wirklich bereit ist – zum Beispiel über Notify=healthy. Dafür braucht es einen Healthcheck. Genau darum geht es in diesem Artikel: was Healthchecks sind, wie du sie definierst und wie du sie in unsere IT-Tools-Quadlet-Datei einbaust.

Healthchecks

Podman bietet genause wie Docker die Möglichkeit, automatisierte Healthchecks eines Containers durchzuführen.

Das Konzept ist simpel: Periodisch wird ein Befehl im Container ausgeführt. Wenn der sich mit Exit-Code 0 beendet, gilt der Container als gesund. Wenn der Exit-Code nicht 0 ist oder sich gar nicht erst beendet, gilt der Container als ungesund.

Healthchecks können direkt in die Images eingearbeitet werden. Falls das gemacht wurde, lassen sie sich mit dem Befehl podman image inspect unter dem Abschnitt „Config“ identifizieren.

Du kannst aber auch Healthchecks beim Erstellen von Containern festlegen. Der Befehl kann über das Flag --health-cmd beim podman run oder podman create gesetzt werden. In Quadlets wird er mittels HealthCmd= festgelegt. Bei unserem IT-Tools-Container würde folgender Befehl Sinn machen:

curl -Isf localhost:8080 > /dev/null

-I holt sich nur den Header, -s steht für Stiller Modus und -f/--fail sorgt dafür, dass curl bei HTTP-Fehlern und Verbindungsproblemen selbst non-zero zurückgibt. > /dev/null sendet alles, was curl heruntergeladen hat, zu /dev/null.

Wenn nichts anderes festgelegt ist, wird der Befehl alle 30 Sekunden ausgeführt, und es braucht drei Wiederholungen des Befehls ohne Exit-Code 0, damit der Container als ungesund gilt. Ausserdem hat der Befehl maximal 30 Sekunden Zeit, bevor der Healthcheck als fehlgeschlagen gilt. Mittels der folgenden Optionen kannst du dies ändern:

Quadlet Option CLI Option
HealthInterval=10s --health-interval=10s
HealthRetries=5 --health-retries=5
HealthTimeout=20s --health-timeout=20s

Weitere Optionen findest du in der Podman Dokumentation.

Healthchecks in unser Quadlet einbauen

Baue den Healthcheck und die Optionen in den zuvor erstellten Container-Quadlet ein, lade den systemd-Daemon neu und starte den Service neu.

cat $XDG_RUNTIME_DIR/containers/systemd/ittools.container
[Unit]
Description=IT Tools container

[Container]
AutoUpdate=registry
Image=ghcr.io/sharevb/it-tools:latest
PublishPort=8080:8080

HealthCmd=curl -Isf localhost:8080 > /dev/null
HealthInterval=1m
HealthRetries=5
HealthTimeout=20s

[Install]
WantedBy=multi-user.target default.target

[Service]
Restart=always
systemctl --user daemon-reload
systemctl --user restart ittools.service

Fazit und Ausblick

Du weisst jetzt, was Healthchecks sind, wie du sie mit --health-cmd/HealthCmd= definierst und über HealthInterval, HealthRetries und HealthTimeout konfigurierst. Damit hat auch der Rollback aus dem letzten Teil eine solide Grundlage.

Im nächsten Teil geht es um Port-Publishing: was sich zwischen rootful und rootless unterscheidet und worauf du dabei achten musst.

TL;DR

Healthcheck-Optionen in der Quadlet-Datei:

[Container]
HealthCmd=curl -Isf localhost:8080 > /dev/null
HealthInterval=1m
HealthRetries=5
HealthTimeout=20s

Änderungen übernehmen:

# ROOTLESS:
systemctl --user daemon-reload
systemctl --user restart ittools.service

# ROOTFUL:
sudo systemctl daemon-reload
sudo systemctl restart ittools.service

Quellen und Dokumentation

Quellen:
- ADHDecode. «Podman Healthchecks: Monitor Container Health (2026)». ADHDecode. Zugriff am 4. August 2026. https://adhdecode.com/articles/podman/podman-healthcheck-configuration/.
- «HEALTHCHECK in Docker/Podman». Zugriff am 4. August 2026. https://www.linkedin.com/pulse/healthcheck-dockerpodman-saurabh--fxtac.
- «podman-healthcheck — Podman documentation». Zugriff am 4. August 2026. https://docs.podman.io/en/stable/markdown/podman-healthcheck.1.html.

Tags

Podman, Healthchecks, HealthCmd, Quadlets

Es wurden noch keine Kommentare verfasst, sei der erste!