Der Docker-Container mit Samba wird ohne Meldung beendet


8

Wir haben einen Server unter CentOS, auf dem sich mehrere Dienste in Docker-Containern befinden, um sie von Hoständerungen zu trennen.

Letzte Woche, Freitag, haben wir ein Update für CentOS durchgeführt, und seitdem wird einer unserer Dienste gestartet und sofort beendet. Die anderen 15+ Dienste sind in Ordnung.

Ich habe das Container-Setup geklont, den Containernamen geändert und mit demselben Problem neu erstellt: Der Container wird gestartet und dann ohne Meldung beendet.

Der Container ist vom Samba-Container von David Personette abgeleitet . Der eigentliche Befehl, der jetzt beendet wird, aber nicht verwendet wurde, lautet:

exec ionice -c 3 smbd -FS

Sollte ich Docker herabstufen, hat das Nebenwirkungen? Kann ich noch etwas tun, um dies wieder zum Laufen zu bringen? Wir haben Container ausgewählt, um vom Betriebssystem zu abstrahieren. Ist diese Abstraktion nicht so gut wie erwartet?


Was passiert, wenn Sie eine Shell im Container ausführen und diesen Befehl dann manuell ausführen?
Jordan

Ich hatte Schwierigkeiten, das zu versuchen. Der Container hat einen Einstiegspunkt und benötigt zum Starten Befehlszeilenparameter. Und wenn es funktionieren würde, hätte ich keine Ahnung, wie ich das in der Produktion verwenden soll. Ist das möglich?
John

Antworten:


8

Der Container wird kommentarlos beendet, es sei denn, Sie erhöhen die Debugstufe. Sie können so etwas wie verwenden --debuglevel=4.

Sobald Sie dies getan haben, erstellen Sie den Container neu und starten Sie ihn neu. Am Ende sollten Sie Folgendes erhalten:

Server exit (EOF on stdin)

Und das deutet auf die Lösung hin, ändern Sie den smbdAufruf in:

exec ionice -c 3 smbd -FS < /dev/null

und Ihr Container sollte nicht mehr direkt austreten.

Ich bin nicht sicher, was diese rückwärts inkompatible Änderung verursacht oder warum dies nicht gegen vorhandene Dockerhub-Einträge getestet wurde.

Beim Upgrade auf 1.11 waren auch zwei meiner Container kaputt. und beim Downgrade auf 1.10.3 stieß ich auf den gefürchteten Cannot stop container .... Container does not exist: container destroyedBug. Ich musste Docker stoppen, die gesamte Geschichte löschen, daher kann ich das nicht wirklich empfehlen.


Dies hat mir gestern geholfen, das Problem zu lösen, ohne ein Downgrade durchführen zu müssen!
John

1
Ich habe irgendwo gelesen, dass das Anhalten von Samba tatsächlich eine Funktion ist. Es versucht festzustellen, ob der übergeordnete Prozess gestorben ist (EOF auf stdin). Ihre Lösung funktioniert perfekt.
Martin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.