Layer 8Ehrlicher Tech-Support
SoftwareSchweregrad: LästigRestarting (1)

Docker-Container startet endlos neu

Der Container hängt in einer Neustartschleife. Der Hauptprozess beendet sich – die Logs des abgestürzten Laufs verraten, warum.

Aufwand:
ca. 30 Min.

Das Symptom

Der Container erscheint in der Übersicht dauerhaft als neu startend. Er läuft nie richtig, ist über seinen Port nicht erreichbar, und in kurzen Abständen erscheint er erneut in der Liste. Die Anwendung dahinter funktioniert nie.

Die „Layer 8“-Wahrheit

Die Neustartschleife ist keine Krankheit. Sie ist ein Symptom, und sie ist sogar gewollt: Man hat Docker ausdrücklich gesagt, es solle den Container bei Beendigung neu starten. Docker gehorcht. Der Container beendet sich, Docker startet ihn, der Container beendet sich wieder. Beide tun genau, was man ihnen aufgetragen hat.

Der Denkfehler dahinter ist meist grundsätzlicher Natur: Ein Container wird für einen virtuellen Rechner gehalten, der eben läuft, weil er läuft. Das tut er nicht. Ein Container lebt exakt so lange wie sein Hauptprozess und keine Sekunde länger. Beendet sich dieser Prozess – ob mit einem Fehler oder erfolgreich, das ist ihm völlig gleich –, ist der Container fertig. Deshalb stirbt ein Container, der einen Dienst brav in den Hintergrund schickt und dann zurückkehrt, sofort. Nicht aus Bosheit. Aus Konsequenz.

Und die Antwort auf das Warum liegt fast immer bereits geschrieben vor: in den Logs des abgestürzten Laufs. Sie werden nur oft nicht gelesen, weil die Aufmerksamkeit auf der Schleife liegt statt auf dem, was der Container beim Sterben noch hinausgerufen hat.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Den Status und den Exit-Code ansehen

    Die Übersicht zeigt, ob der Container neu startet und mit welchem Code er sich beendet hat. Ein Exit-Code ungleich null bedeutet, dass die Anwendung im Container abgebrochen ist – nicht, dass Docker versagt hat.

    docker ps -a
  2. 2.

    Die Logs des letzten Laufs lesen

    Hier steht die eigentliche Antwort. Der Container schreibt vor dem Absturz meist einen Fehler – eine fehlende Umgebungsvariable, eine nicht erreichbare Datenbank, eine kaputte Konfiguration. Diese Zeilen sind die ganze Diagnose.

    docker logs --tail 50 CONTAINERNAME
  3. 3.

    Die Neustartschleife vorübergehend anhalten

    Solange die Richtlinie den Container immer wieder startet, überschreiben neue Fehlversuche die Sicht. Die Richtlinie kurz aussetzen, um in Ruhe zu untersuchen.

    docker update --restart=no CONTAINERNAME
    docker stop CONTAINERNAME
  4. 4.

    Verstehen, wann ein Container endet

    Ein Container lebt genau so lange wie sein Hauptprozess. Beendet sich dieser – ob mit Fehler oder erfolgreich – ist der Container fertig. Ein Container, der ein Programm im Hintergrund startet und dann zurückkehrt, beendet sich sofort. Das ist kein Fehler, das ist das Konzept.

  5. 5.

    Abhängigkeiten und Startreihenfolge prüfen

    Startet die Anwendung schneller als die Datenbank, auf die sie wartet, bricht sie ab und der Container startet neu – im Kreis. Solche Abhängigkeiten gehören mit Bereitschaftsprüfungen abgesichert, nicht mit Wartezeiten geraten.

  6. 6.

    Mit einer Shell hineinschauen

    Bleibt es unklar, hilft ein Start mit einer Shell statt des eigentlichen Befehls. So lässt sich im Container prüfen, ob Dateien, Rechte und Umgebungsvariablen wirklich so sind, wie erwartet.

    docker run -it --rm --entrypoint sh IMAGE

Häufige Fragen (FAQ)

?Warum beendet sich mein Container sofort, obwohl kein Fehler kommt?

Weil der Hauptprozess fertig ist. Ein Container ist kein virtueller Rechner, der einfach läuft – er lebt exakt so lange wie sein Hauptprozess. Wer einen Dienst im Hintergrund startet und dann zurückkehrt, beendet damit den Container.

?Hilft es, die Neustart-Richtlinie einfach abzuschalten?

Zur Analyse ja, als Lösung nein. Die Richtlinie ist nicht die Ursache, sie macht das Problem nur sichtbar. Ohne sie stirbt der Container einmal statt endlos – das eigentliche Problem im Container bleibt.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Auch zu finden unter

Verwandte Fehler

SWLästigexec format error

Docker: exec format error

Der Container startet nicht und meldet „exec format error“? Fast immer passt die Prozessorarchitektur des Images nicht zum Host — ARM gegen x86.

SWLästigCannot connect to the Docker daemon

Docker: Cannot connect to the Docker daemon

docker-Befehle scheitern mit 'Cannot connect to the Docker daemon'? Meist läuft der Dienst nicht oder Rechte fehlen. So läuft es wieder.

SWLästigno space left on device

Docker: no space left on device beheben

Docker bricht mit 'no space left on device' ab, obwohl scheinbar Platz da ist? Alte Images, Container und Build-Cache fressen die Platte. So räumst du auf.