"docker stop Duplicati" führt zu Docker unerwartet gestoppt

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

pipsen

Benutzer
Registriert
03. Dez. 2020
Beiträge
31
Reaktionspunkte
0
Punkte
6
Hi,

ich habe einen Docker Container "Duplicati" am NAS, was Nachts um 2 Uhr, 3 Uhr und 4 Uhr einen Backup Job auf eine lokal angeschlossene USB Festplatte startet. Über zwei cronjobs passiert folgendes:

01:00 Uhr: mount USB Festplatte + docker start Duplicati
05:00 Uhr: docker stop Duplicati + eject USB Festplatte

Technisch funktioniert das auch perfekt, aber ich bekomme jeden Morgen die Meldung im DSM und per eMail:
Docker-Container Duplicati wurde unerwartet gestoppt. Weitere Informationen finden Sie unter Docker.

Im Docker log steht:
05:00:01 [cont-finish.d] executing container finish scripts
05:00:01 [cont-finish.d] done .
05:00:01 [s6-finish] waiting for services.
05:00:01 [s6-finish] sending all processes the TERM signal.
05:00:04 [s6-finish] sending all processes the KILL signal and exiting

Interessant ist:
Wenn den Container manuell in der Docker GUI vom DSM stoppe, passiert das nicht. Gibts vielleicht einen syno-command im Terminal, womit ich den Container mehr "graceful" beenden kann?

Dankeschön für eure Hilfe!
 
Klar, wenn man es durch die Docker-UI der Syno stoppt, dann bekommt sie es auch mit. Aus ihrer Sicht ist es unerwartet, dass ein Container direkt über den Docker Cli-Client beendet wird.

Hiermit müsste es ohne Fehlermeldung funktionieren:
Code:
synowebapi --exec api=SYNO.Docker.Container version=1 method=stop name="${CONTAINER_NAME}"
synowebapi --exec api=SYNO.Docker.Container version=1 method=start name="${CONTAINER_NAME}"
 
MEGA COOL! Vielen lieben Dank... works like a charm - genau das hab ich gesucht!
 
Klar, wenn man es durch die Docker-UI der Syno stoppt, dann bekommt sie es auch mit. Aus ihrer Sicht ist es unerwartet, dass ein Container direkt über den Docker Cli-Client beendet wird.

Hiermit müsste es ohne Fehlermeldung funktionieren:
Code:
synowebapi --exec api=SYNO.Docker.Container version=1 method=stop name="${CONTAINER_NAME}"
synowebapi --exec api=SYNO.Docker.Container version=1 method=start name="${CONTAINER_NAME}"
Da du dich mit der DSM API sehr gut auskennst.. vielleicht hast du ja noch eine elegantere Methode im Kopf, wie man den Eject / Remount einer anschlossenen USB Festplatte hinbekommt? Momentan mach ich das so:

Unmount:
Code:
/usr/syno/bin/synousbdisk -rcclean
/usr/syno/bin/synousbdisk -umount /dev/sdq
umount /volumeUSB1/usbshare1-1
umount /volumeUSB1/usbshare1-2
echo "4-2" > /sys/bus/usb/drivers/usb/unbind
rmdir /volumeUSB1/usbshare1-1 /volumeUSB1/usbshare1-2

Mount:
Code:
echo "4-2" > /sys/bus/usb/drivers/usb/bind
 
Danke @haydibe. Danach habe ich schon länger gesucht.

In der offiziellen syno community wurde das auch mal gefragt, dort wurde es leider noch nicht gelöst 👍🏻
 
Zuletzt bearbeitet:
  • Like
Reaktionen: EDvonSchleck
Gemäß
Code:
docker stop --help
sollte ein
Code:
docker stop <container>
dem Container nach dem stop-Signal 10 Sekunden Zeit geben, bevor dann ein KILL erfolgt. Gemäß dem Log oben sind es seltsamerweise nur 3 Sekunden. Vielleicht würde ein
Code:
docker stop -t 120 <container>
auch sauber funktionieren.

Auch ich möchte Duplicati für die Backups meiner Diskstation einsetzten. Mein Ziel ist, dass wenn ich die Stromversorgung meiner externen Festplatte einschalte, diese gemountet wird, per Autorun der Duplicati-Container aktiviert wird und das Backup startet. Und das wenn das Backup fertig ist, die Festplatte dann auch ausgeworfen wird. Und am besten auch noch per Smart-Steckdose die Stromversorgung der Festplatte wieder abgeschaltet wird.
An meinem Windows-Laptop verwende ich Duplicati.CommandLine.exe und fürs Backup garnicht die graphische Duplicati-Oberfläche.
Für die Diskstation bin ich noch auf der Suche, wie ich Duplicati hier im Container per Kommandozeile bedienen kann. Geht da direkt mit docker run ... irgendwas? Oder nach dem normalen Duplicati-Start mit docker exec ...? Oder brauche ich eine spezielle Version eines Duplicati-Docker-Images?
 
Die notwendigen Skriptkommandos um ein Backup zu starten habe ich inzwischen gefunden. Duplicati-Backups im Docker-Container starte ich mittels den folgen Zeilen:
paramArray=("exec" "duplicati$diskID" "mono" "/app/duplicati/Duplicati.CommandLine.exe" "backup")
paramArray+=("file:///usbshare$diskID/$targetFolderName/")
paramArray+=("--backup-name=$backupName$diskID")
paramArray+=("--encryption-module=aes")
paramArray+=("--exclude=\"*@eaDir*/\"")
paramArray+=(...)
...
oldIFS="$IFS"
IFS=$'\n'
/usr/local/bin/docker "${paramArray[@]}" 2>&1 | /bin/tee -a "$logfilePathNameDuplicati" ; retval=${PIPESTATUS[0]}
IFS="$oldIFS"
...

Dabei habe ich für jede meiner externen Festplatten einen eigenen Dockercontainer mit dem Namen "duplicati$diskID"
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat