Dies ist keine direkte Antwort auf Ihre Frage, aber es ist möglicherweise wichtiger, und ich bin auf diese Erkenntnis gestoßen, als ich die anderen Antworten hier gelesen habe.
Ich habe einige Erfahrungen mit der Migration einiger komplizierter Systeme auf Docker gesammelt und festgestellt, dass Sie idealerweise einen Docker-Container pro Anwendung / Dienst oder "pro Daemon" haben sollten.
Ein sehr wichtiger Grund dafür ist, dass Docker Dienste, die Sie mit systemctl starten, nicht sauber herunterfährt und dass Sie möglicherweise dieselbe Art von Datenbankbeschädigungen erleiden , die von einem unerwarteten Stromausfall herrühren.
Um dies etwas genauer zu erläutern: Wenn Docker einen Stoppbefehl an einen Container ausgibt, sendet es das SIGTERM-Signal nur an den einen einzelnen Prozess, der mit CMD / ENTRYPOINT gestartet wurde, nicht an alle Dienste und Dämonen. Damit ein Dienst die Warnung erhält, dass er sauber heruntergefahren werden muss, und alle anderen sofort beendet werden.
Wenn Sie unbedingt zwei Services in denselben Container packen müssen (z. B. Ihre Anwendung und eine PostgreSQL-Datenbank oder ähnliches), muss CMD / ENTRYPOINT ein Skript sein, das SIGTERM abfängt und an diese bekannten Services weiterleitet. Es ist möglich, aber wenn Sie die Möglichkeit haben, überdenken Sie Ihre Lösung und versuchen Sie, sie in mehrere Container aufzuteilen.
Ein Nachtrag
Auf der Docker-Site gibt es einen interessanten Hinweis / eine interessante Seite zur Verwendung von Supervisord, wenn unbedingt mehrere Dienste im selben Container ausgeführt werden müssen.
sudo
?