- 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 |
||
|---|---|---|
| .. | ||
| aufgabe.sh | ||
| index.html | ||
| musterloesung.sh | ||
| README.md | ||
| test_aufgabe.sh | ||
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
poll_container_health(container_name, max_retries, sleep_sec): Prüft per Schleifedocker inspect, ob ein Container"healthy"meldet.build_volume_backup_command(volume, host_dir, archive): Erzeugt das standardkonformedocker run --rm -v ... alpine tar czf ...Backup-Kommando.build_docker_prune_command(all_flag, until_hours): Konstruiertdocker system prune -fmit optionalen-aund--filter "until=...h"Flags.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