Restart Policies: Container automatisch neu starten lassen

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 always oder unless-stopped verwenden
  • Bei Debug- oder Test-Containern kann on-failure sinnvoll sein
  • Restart Policies mit depends_on und 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 -a prü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.

Related Articles