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.
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.
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.
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.
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.
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.
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.
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.