Änderungen gehen bei Docker-Neustart verloren

Hallo, habe eben mit Entsetzen festgestellt, dass wenn ich bspw. Variablen lösche oder etwas hinzufüge an Instanzen und direkt danach den Docker neu starte, die Änderungen nicht gewirkt haben. Die gelöschten Variablen sind wieder da und die neu angelegten sind weg.

Muss ich einfach x Minuten warten, bevor man den Docker neustartet?

Habt ihr ähnliche Phänomene?

System: Qnap NAS mit IPS Docker

Standardmäßig wird nur alle 10 Minuten die settings.json gespeichert, bei korrektem Beenden und Neustarten von Symcon eigentlich auch.

Keine Ahnung, wie das bei Docker ist, hört sich ja so an, als ob Symcon abgeschossen wird.

Sofern du sauber Stop + Start machst werden die Änderungen gespeichert. Sicher, dass du die Data Mounts richtig gesetzt hast? Und das der Container auch sauber runterfährt? Das kannst du am besten in den Logfiles prüfen.

paresy

Ich mache das über einen Restart und nicht Stop/Start. Vielleicht war dass das Problem? Ich checke das mal

Zum 1. : Ich verspreche das nächste mal früher zu suchen :smiley: nur durch einen Zufall hab ich gerade gesehen, dass es hier schon einen Beitrag gab, dabei hab ich paresy eben schon im Discord „aufgehalten“…

aber 2. eine Lösung hast du ja noch nicht…
ich auch noch nicht ganz, bin aber dichter dran…

Docker fährt den Container sauber runter, aber Standardmäßig hat man nur 10 Sekunden bis er alles killt. Mein Symcon wartet aber noch auf das beenden der PHP-Threads. Ich hab dann mal auf 60 Sekunden erhöht, aber bei mir reicht das immer noch nicht. Jetzt suche ich mal warum bei mir Tasmota-Scripte „hängen“ bleiben, aber vielleicht genügt es dir ja auch die Zeit erstmal hoch zu setzen. Das geht über 2 Wege: 1. beim docker-Befehl zum erzeugen des Container --StopTimout mitzugeben oder 2. im docker-compose-Script. Da ich Portainer nutze und mein Container mit viel „config“ schon lief habe ich bei mir docker-compose genutzt (dazu hab ich mir mit https://github.com/Red5d/docker-autocompose ein Compose-Script aus meinem laufenden Container erzeugt). Wichtig ist aber nur der Parameter stop_grace_period: 60s (keine Ahnung warum der hier anders heisst).

Vielleicht hilft es dir ja weiter… wenn meine Zombie-Scripte weg sind teste ich auch weiter

@FRAD Update: Seit dem meine Zombie-Threads weg sind, funktioniert es zumindest mit einem TimeOut von 30 Sekunden zuverlässig.
Falls du das bei dir auch einbauen möchtest können wir gerne für dich eine compose-Datei dängeln. Schau doch auch mal ob du auch noch Zombies hast.

und ich nochmal…

hab einen sanfteren Weg gefunden den Container zu restarten und nichts zu verlieren.

mit „kill 1“

wird Symcon beendet, kann sich noch runterfahren und speichern, wenn der Prozess dann ganz weg ist erkennt es der Container und beendet sich… da ich die Restart-Policies auf „always“ habe, startet docker danach den Container hübsch neu. Der Vorteil ist, dass das stoppen des Container erst passiert, wenn sich Symcon beendet hat (also schon gespeichert hat) und damit nichts verloren geht und kein Timeout notwendig ist.

Hinweis: Nachteil ist aber, dass wenn IP-Symcon sich nicht sauber beenden lässt, der Container für immer in einem halbtoten Zustand ist :slight_smile:

paresy

das ist richtig… ich habe es bei mir 2-Stufig umgesetzt… 1. Stufe der Kill , der es hoffentlich „sanft“ zuende bringt, aber wenn es dann nicht zuende kommt, gehe ich mit Docker REmote Daemon auf den Docker-Host und veranlasse bei dem dann den Container-Restart. Dabei ist aber in allen Fällen die Gefahr dar, das die Daten nicht gesichert sind.