Aufgaben-Python/courses/bash/13_docker_und_container_scripting
Alex Mueller 2571cb8847 feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide
- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel)
- Kurswechsler Dropdown mit Direktnavigation
- Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage
- Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets
- Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor
- Saubere Bereinigung redundanter statischer Legacy-Sidebars
2026-09-12 13:49:46 +02:00
..
aufgabe.sh Integration von 2 vollständigen DevOps- & Scripting-Kursen: (1) Linux Bash & Cloud DevOps (16 Module) und (2) Modern PowerShell 7+ Core (16 Module) mit Multithreading, REST-Pipelines, Runner-Adaptern und 8 neuen Zertifikaten 2026-08-30 12:55:08 +02:00
index.html feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide 2026-09-12 13:49:46 +02:00
musterloesung.sh Integration von 2 vollständigen DevOps- & Scripting-Kursen: (1) Linux Bash & Cloud DevOps (16 Module) und (2) Modern PowerShell 7+ Core (16 Module) mit Multithreading, REST-Pipelines, Runner-Adaptern und 8 neuen Zertifikaten 2026-08-30 12:55:08 +02:00
README.md Integration von 2 vollständigen DevOps- & Scripting-Kursen: (1) Linux Bash & Cloud DevOps (16 Module) und (2) Modern PowerShell 7+ Core (16 Module) mit Multithreading, REST-Pipelines, Runner-Adaptern und 8 neuen Zertifikaten 2026-08-30 12:55:08 +02:00
test_aufgabe.sh Integration von 2 vollständigen DevOps- & Scripting-Kursen: (1) Linux Bash & Cloud DevOps (16 Module) und (2) Modern PowerShell 7+ Core (16 Module) mit Multithreading, REST-Pipelines, Runner-Adaptern und 8 neuen Zertifikaten 2026-08-30 12:55:08 +02:00

Bash 13: Docker & Container Lifecycle Scripting 🐳

Willkommen zu Modul 13! Container sind das Rückgrat moderner Cloud-Native-Architekturen. In diesem Modul lernst du, wie du Container-Lifecycles, Health-Checks, automatische Datensicherungen von Docker Volumes und Ressourcen-Bereinigungen per Bash automatisierst.


💡 1. Das Wichtigste in Kürze

1.1 Container Health-Polling

Bevor nachfolgende Schritte in CI/CD oder Deployments laufen, muss geprüft werden, ob Dienste (wie Datenbanken) wirklich einsatzbereit sind:

# 🎯 Polling-Schleife mit Timeout:
attempt=1
max_retries=10

while [ "$attempt" -le "$max_retries" ]; do
    status=$(docker inspect --format='{{.State.Health.Status}}' my-postgres 2>/dev/null)
    if [ "$status" = "healthy" ]; then
        echo "Datenbank ist bereit!"
        break
    fi
    sleep 2
    ((attempt++))
done

1.2 Docker Volume Backup Pattern

Docker Volumes lassen sich über einen temporären Alpine-Container sichern, ohne den Host-Pfad manuell suchen zu müssen:

# 🎯 Volume in komprimiertes tar.gz auf dem Host sichern:
docker run --rm \
  -v my_volume:/volume_data \
  -v /var/backups:/backup \
  alpine tar czf /backup/my_volume_backup.tar.gz -C /volume_data .

1.3 Ressourcen-Bereinigung & Pruning

Verhindere "No space left on device" durch automatisierte Aufräumroutinen:

# 🎯 Bereinigt ungenutzte Images, Container & Netzwerke älter als 7 Tage (168 Stunden):
docker system prune -f -a --filter "until=168h"

🎯 Aufgaben in aufgabe.sh

  1. poll_container_health(container_name, max_retries, sleep_sec): Prüft per Schleife docker inspect, ob ein Container "healthy" meldet.
  2. build_volume_backup_command(volume, host_dir, archive): Erzeugt das standardkonforme docker run --rm -v ... alpine tar czf ... Backup-Kommando.
  3. build_docker_prune_command(all_flag, until_hours): Konstruiert docker system prune -f mit optionalen -a und --filter "until=...h" Flags.
  4. parse_container_stats_json(json_str): Extrahiert Container-Statistiken und formatiert die Ausgabe: CONTAINER: <name> | CPU: <cpu> | MEM: <mem>.

🧪 Tests ausführen

# Eigene Lösung testen:
bash test_aufgabe.sh

# Musterlösung testen:
bash test_aufgabe.sh musterloesung.sh