Restart Policies in Docker ermöglichen es, Container automatisch neu zu starten, falls sie abstürzen, das Host-System neu gestartet wird oder bestimmte Bedingungen eintreten. Dies erhöht die Verfügbarkeit und Stabilität von Diensten in produktiven Umgebungen. In diesem Tutorial lernen Sie, wie Restart Policies in Docker Compose sinnvoll konfiguriert werden und welche Optionen zur Verfügung stehen.
Grundlagen von Restart Policies
Docker bietet mehrere Strategien, um Container automatisch neu zu starten:
- no: Kein automatischer Neustart (Standard)
- always: Container wird immer neu gestartet, unabhängig vom Exit-Status
- on-failure: Container wird nur bei einem Fehlercode ungleich 0 neu gestartet
- unless-stopped: Container wird immer neu gestartet, außer er wurde manuell gestoppt
Syntax in Docker Compose
Restart Policies werden innerhalb eines Services definiert:
services:
myservice:
image: myorg/service:latest
restart: unless-stopped
- Die Policy wird direkt unter dem Service definiert
- Gilt sowohl für Container-Neustarts nach Absturz als auch nach Host-Reboot
Beispiel: Webservice mit Restart Policy
services:
web:
image: nginx:latest
container_name: web
ports:
- "80:80"
restart: always
- Der Nginx-Container wird nach jedem Absturz oder Systemneustart automatisch gestartet
- Erhöht die Verfügbarkeit der Webanwendung
Beispiel: Datenbank mit on-failure
services:
db:
image: postgres:16
container_name: db
environment:
POSTGRES_USER: appuser
POSTGRES_PASSWORD: securepassword
restart: on-failure
volumes:
- db_data:/var/lib/postgresql/data
- Die Datenbank startet nur bei einem Fehlercode neu, normale Beendigungen werden nicht neu gestartet
- Verhindert unnötige Neustarts bei manuell gestoppten Containern
Beispiel: Microservices-Stack mit unless-stopped
services:
api:
image: myorg/api-service:latest
restart: unless-stopped
networks:
- backend_net
frontend:
image: myorg/frontend-service:latest
restart: unless-stopped
networks:
- frontend_net
- backend_net
- Alle Microservices werden automatisch wiederhergestellt, sofern sie nicht manuell gestoppt wurden
- Ideal für produktive Umgebungen, in denen Services kontinuierlich verfügbar sein müssen
Praktische Tipps für Restart Policies
- Für kritische Dienste
alwaysoderunless-stoppedverwenden - Bei Debug- oder Test-Containern kann
on-failuresinnvoll sein - Restart Policies mit
depends_onund Healthchecks kombinieren, um Reihenfolgen und Abhängigkeiten zu sichern - Ressourcenverbrauch beachten, um Neustart-Schleifen bei fehlerhaften Containern zu vermeiden
- Logs regelmäßig überwachen, um Fehlerursachen zu erkennen
Stack starten und Neustarts testen
Stack starten:
docker-compose up -d
Neustart eines Containers simulieren:
docker stop web
docker ps -a
- Mit
docker ps -aprüfen, dass der Container automatisch wieder gestartet wurde - Healthchecks oder Logs können zusätzlich die erfolgreiche Wiederherstellung überwachen
Updatefähigkeit
Restart Policies bleiben auch nach Updates bestehen. Neue Images können per Pull aktualisiert werden, während Docker Compose die Container automatisch mit der definierten Restart Policy neu startet.
docker-compose pull
docker-compose up -d
Zusammenfassung
Restart Policies in Docker Compose sorgen für eine hohe Verfügbarkeit von Diensten. Sie ermöglichen, dass Container nach Abstürzen oder Systemneustarts automatisch wiederhergestellt werden. In Kombination mit Volumes, Healthchecks und Netzwerken erhöhen sie die Stabilität von produktiven Microservices- oder Multi-Container-Umgebungen und erleichtern Updates sowie Rollbacks.
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.











