Rolling Updates sind eine wichtige Strategie, um Container-Services kontinuierlich zu aktualisieren, ohne dass es zu spürbaren Ausfallzeiten kommt. Während Docker Swarm oder Kubernetes eingebaute Mechanismen für Rolling Updates bereitstellen, lassen sich ähnliche Patterns auch mit Docker Compose umsetzen. Dieser Leitfaden zeigt praxisnahe Methoden, wie Sie Updates kontrolliert ausrollen können.
1. Grundlagen von Rolling Updates
Bei Rolling Updates werden Container nach und nach aktualisiert, sodass immer eine funktionierende Instanz online bleibt. Ziel ist es, die Verfügbarkeit zu sichern und Downtime zu vermeiden.
- Neue Container-Versionen werden parallel gestartet.
- Alte Container werden schrittweise gestoppt, nachdem die neuen erfolgreich laufen.
- Gesundheitsprüfungen (Healthchecks) steuern, wann Container für Live-Traffic freigegeben werden.
2. Vorbereitung der Compose-Umgebung
Ein sauber strukturierter Compose-Stack ist Voraussetzung für kontrollierte Updates.
Beispiel-Setup
version: "3.9"
services:
app_v1:
image: myapp:1.0
ports:
- "8080:80"
networks:
- webnet
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 15s
timeout: 5s
retries: 3
networks:
webnet:
driver: bridge
- Healthchecks definieren, wann ein Container bereit für Traffic ist.
- Netzwerke ermöglichen den Zugang über Load-Balancer oder Reverse Proxy.
- Versionierte Services erleichtern Rollbacks.
3. Deployment-Pattern: Blue/Green als Rolling Basis
Auch ohne Swarm kann das Blue/Green-Pattern als Basis für Rolling Updates dienen:
- Blue-Umgebung läuft live.
- Green-Umgebung wird parallel mit neuer Version gestartet.
- Nach erfolgreichem Test wird der Traffic schrittweise auf Green umgeleitet.
- Blue bleibt als Backup bestehen, bis die Green-Version stabil läuft.
4. Traffic-Steuerung
Für Rolling Updates muss der Traffic kontrolliert verteilt werden.
Option 1: Reverse Proxy
upstream app {
server app_v1:80;
server app_v2:80; # neue Version
}
server {
listen 80;
location / {
proxy_pass http://app;
}
}
- Der Proxy kann Requests an beide Versionen verteilen.
- Gewichtung erlaubt schrittweise Migration.
- Nach vollständigem Rollout wird die alte Version entfernt.
Option 2: Port-Mapping
Alternativ können Container unterschiedliche Ports verwenden und der Load-Balancer den Traffic schrittweise umschalten.
5. Update-Skripte und Automatisierung
Rolling Updates lassen sich mit einfachen Bash- oder Python-Skripten automatisieren:
# Beispiel Bash-Skript
docker-compose up -d app_v2
# Warten bis Healthcheck erfolgreich
sleep 15
docker-compose stop app_v1
docker-compose rm -f app_v1
- Neuen Container starten und prüfen.
- Alten Container erst stoppen, wenn der neue stabil läuft.
- Rollback möglich durch erneutes Starten der alten Version.
6. Healthchecks als Kontrollmechanismus
Healthchecks steuern, wann Container für den Traffic freigegeben werden:
services:
app_v2:
image: myapp:2.0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 10s
timeout: 5s
retries: 3
- Nur gesunde Container nehmen am Traffic teil.
- Verhindert Downtime durch fehlerhafte Deployments.
7. Umgang mit Datenbanken
Schreibende Dienste benötigen besondere Aufmerksamkeit:
- Migrationen müssen rückwärtskompatibel sein.
- Optional können Read-Replicas für Tests genutzt werden.
- Bei kritischen Schema-Änderungen kurze Maintenance-Fenster einplanen.
8. Rollback-Strategien
Falls Probleme auftreten, ist ein schnelles Rollback möglich:
- Traffic wieder auf alte Version umleiten.
- Neue Container stoppen und ggf. löschen.
- Logs analysieren und Fehler korrigieren.
9. Monitoring und Logging
Für sichere Rolling Updates ist Monitoring entscheidend:
- Healthchecks regelmäßig prüfen.
- Load-Balancer-Logs überwachen.
- Alerting bei Fehlern, hohen Latenzen oder Crashloops einrichten.
10. Best Practices
- Versionierte Container für Blue/Green-Pattern einsetzen.
- Healthchecks als Gatekeeper für Traffic nutzen.
- Automatisierte Skripte für Start, Stop und Rollback implementieren.
- Datenbank-Migrationen sorgfältig planen.
- Monitoring und Logging konsequent einsetzen.
- Dokumentation der Prozesse für das Team bereitstellen.
11. Zusammenfassung
Rolling Updates ohne Swarm lassen sich mit Docker Compose durch gezielte Versionierung, parallele Container, Traffic-Switches und Healthchecks effizient umsetzen. Mit klaren Patterns, Automatisierung und Monitoring können stabile Deployments erreicht werden, die Ausfallzeiten vermeiden und Rollbacks vereinfachen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

