💎 Lehrpfad 4: Cloud DevOps, BATS & Masterprojekt

Bash 13: Docker & Container Lifecycle Scripting

Automatisiere Container: Health-Polling, Volume-Backups ĂŒber ephemere Hilfs-Container, Image-Pruning und Resource-Monitoring.

🐳 1. Container Lifecycle & Health-Polling

Bevor Integrationstests oder App-Deployments starten, muss sichergestellt sein, dass Container wie PostgreSQL oder Redis wirklich ansprechbar sind:

# 🎯 Status mit inspect abfragen:
status=$(docker inspect --format='{{.State.Health.Status}}' my-postgres)

# Mögliche Werte:
# - "starting" (Container bootet, Healthcheck lÀuft noch)
# - "healthy"  (Healthcheck meldet Erfolg)
# - "unhealthy" (Dienst reagiert nicht korrekt)

đŸ’Ÿ 2. Das Docker Volume-Backup Pattern

Statt proprietÀre Pfade in /var/lib/docker/volumes anzufassen, mounted ein schlanker Helper-Container (z.B. Alpine) das Volume und erstellt das Backup:

[Host-System /backups] ◀──────┐
                              â”‚ (tar.gz)
   [Alpine Helper-Container] ─┮─> tar czf /backup/db.tar.gz -C /volume_data .
              â–Č
              â”‚ (-v db_data:/volume_data)
   [Named Volume: db_data]
📩 Didaktische Analogie: Der mobile Umzugshelfer

Ein Volume ist wie ein abgeschlossener Lagerraum. Der ephemere Alpine-Container ist der Umzugshelfer, der kurz den Raum betritt, alles in Kartons packt (tar czf), die Kiste vor die LagertĂŒr stellt und sich danach sofort wieder in Luft auflöst (--rm).

📑 3. Cheat-Sheet: Docker Automation

Befehl Optionen / Format Zweck
docker inspect --format='{{.State.Health.Status}}' Liest gezielt Metadaten & Health-Status aus
docker run --rm -v vol:/data -v $(pwd):/backup FĂŒhrt Einmal-Aufgaben aus & löscht Container danach
docker system prune -f -a --filter "until=168h" Löscht ungenutzte Images, Layer & Container
docker stats --no-stream --format json Gibt Momentaufnahme von CPU/RAM als JSON

🧠 Diagnostischer Selbst-Check

ÜberprĂŒfe dein VerstĂ€ndnis der Kernkonzepte und typischen CLI-/Git-Fallen, bevor du die Kommandos in der Praxis anwendest.

🎯 Aufgaben & Checkliste in aufgabe.sh

đŸ’» In Web-IDE öffnen → ← ZurĂŒck zu Bash 12 Weiter zu Bash 14 →