Docker Container Services vor dem Backup stoppen und erneut starten

  • Grüß euch,
    Ich bin gerade dabei mich in raspiBackup genauer einzulesen und bin im Punkt "Services stoppen" (und damit Verbunden im FAQ18) auf die Liste der zu stoppenden Services (welches aktuell implementiert sind) gestoßen. Da ich meinen Raspberry Pi eigentlich nur als Docker Container Server nutze, ist mir aufgefallen dass die Funktion Docker Container zu stoppen und anschließend wieder zu starten bis dato noch nicht enthalten ist.

    Gibt es bereits Leute die hier Erfahrungen haben? Arbeitet raspiBackup ohne Probleme mit laufenden Docker Containern?

    Könnte man diese Funktion im raspiBackup ergänzen? Ein Skript könnte wie folgt aussehen.


    Fox-Jet

  • Docker Container Services vor dem Backup stoppen und erneut starten? Schau mal ob du hier fündig wirst!

  • die Funktion Docker Container zu stoppen und anschließend wieder zu starten bis dato noch nicht enthalten ist.

    Wozu?

    Wenn du Docker stoppst, schickt der Docker-Daemon ein SIGTERM an alle Container und wartet 10/30 Sekunden (default Timeout Linux/Windows-Container) , damit sie sich beenden können. Nach diesen 10/30 Sekunden erhalten die Container ein SIGKILL.

    Sollten deine Container sich innerhalb dieser Gracetime nicht beenden, so erhöhe sie.

    docker container stop
    docs.docker.com

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Interessanter Thread. Ich bin nicht so fit im Dockerbereich um 100% sicher zu wissen was ich in raspiBackup tun muss um Docker zu stoppen, würde das aber gerne aufnehmen.

    llutz Verstehe ich Dich richtig dass ein systemctl stop docker ausreicht um Docker zu stoppen? Wenn das so ist kann ich docker in die Liste der Services aufnehmen die im Installer automatisch ausgewählt werden um Services zu stoppen. Bislang wird schon containerd standardmässig gestoppt.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Wenn dann Dir raspiBackup den Ar*** gerettet hat

    solltest Du fairerweise diese Seite besuchen und ein Trinkgeld spendieren :shy:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • Perfekt. Das kann momentan schon im raspiBackupInstaller konfiguriert werden. Nur ist docker momentan noch nicht standardmäßig ausgewählt. Das einzubauen ist schnell gemacht.

    Ich habe Docker dummymäßig bei mir am laufen und jetzt sieht die Zeile zum Stoppen in raspiBackup wie folgt aus:

    Code
    systemctl stop apache2 && systemctl stop containerd && systemctl stop cron && systemctl stop influxdb && systemctl stop docker

    Wer dann einen anderen Timeout setzen will kann das dann händisch in der Konfigurationsdatei noch definieren

    Code
    systemctl stop apache2 && systemctl stop containerd && systemctl stop cron && systemctl stop influxdb && systemctl stop docker -t 180

    um den Timeout für alle Container auf 3 Minuten zu setzen.

    Interessant ist auch für mich, dass man den Timeout pro Container definieren kann:

    Quote

    The default timeout can be specified using the --stop-timeout option when creating the container. If no default is configured for the container, the Daemon determines the default, and is 10 seconds for Linux containers, and 30 seconds for Windows containers.

    Fox-Jet Demnach kannst Du jetzt schon den Docker Container von raspiBackup stoppen lassen: Einfach sudo raspiBackupInstallUI aufrufen und M3 -> C3 auswählen und dann noch docker auswählen.

    llutz Ich bekomme bei mir, wenn ich docker stoppe, noch folgende Meldung:

    Code
    Warning: Stopping docker.service, but it can still be activated by:
      docker.socket

    Besteht da noch irgendwelcher Handlungsbedarf?

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Wenn dann Dir raspiBackup den Ar*** gerettet hat

    solltest Du fairerweise diese Seite besuchen und ein Trinkgeld spendieren :shy:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • Habe mal eben ein wenig gelesen: So wie ich es verstehe ist das Starten bzw Stoppen per Socket schon ein enhanced Feature und wird nur in besonderen Fällen genutzt. raspiBackup soll und kann nur die Standardfälle abdecken. D.h. der Normalfall ist mit systemctl stop docker abgedeckt. Wer sockets nutzt muss dann eben in der raspiBackup Config Anpassungen vornehmen und/oder Plugins schreiben. Und vermutlich wird jemand der Docker enhanced nutzt auch kein raspiBackup nutzen.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Wenn dann Dir raspiBackup den Ar*** gerettet hat

    solltest Du fairerweise diese Seite besuchen und ein Trinkgeld spendieren :shy:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

    Edited once, last by framp (February 26, 2025 at 12:56 PM).

  • D.h. der Normalfall ist mit systemctl stop docker abgedeckt.

    Die Frage ist nur welche Container wieder starten wenn du Docker daemon startest.

    Laut Dockerdocs werden nur diejenigen neu gestartet, welche auch als „restart policy“ „always“ verwendet.


    Deswegen wäre meine Idee auch gewesen (#1) nur die laufenden Container per ID oder Name zu beenden und dann nur diese Container auch wieder zu starten. Aber ich kann mir gut vorstellen, dass diese Implementierung einen höheren Aufwand darstellt + Docker selber wird damit nicht gestoppt.

  • nur die laufenden Container per ID oder Name zu beenden und dann nur diese Container auch wieder zu starten

    Nach meinem unbedarften Gefühl sollten alle Container die beim Start laufen sollen die always restart Policy haben. Alle anderen Container sind doch nur irgendwelche Test- oder Spielcontainer und keine Produktionscontainer.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Wenn dann Dir raspiBackup den Ar*** gerettet hat

    solltest Du fairerweise diese Seite besuchen und ein Trinkgeld spendieren :shy:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • D.h. der Normalfall ist mit systemctl stop docker abgedeckt.

    Die Frage ist nur welche Container wieder starten wenn du Docker daemon startest.

    Laut Dockerdocs werden nur diejenigen neu gestartet, welche auch als „restart policy“ „always“ verwendet.


    Deswegen wäre meine Idee auch gewesen (#1) nur die laufenden Container per ID oder Name zu beenden und dann nur diese Container auch wieder zu starten. Aber ich kann mir gut vorstellen, dass diese Implementierung einen höheren Aufwand darstellt + Docker selber wird damit nicht gestoppt.

    Ich meine mich zu erinnern das raspiBackup die Möglichkeit hat eigene Scripte aufzurufen.
    Bin mir aber nicht mehr ganz sicher, nach dem Umzug auf Proxmox habe ich nichts mehr zu sichern :D
    Dazu kann framp sicher mehr sagen.

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Docker wird jetzt in der aktuellen Release 0.7.0 beim Installer standardmäßig als zu stoppender Service angezeigt. Wer seinen aktuellen Installer updaten will kann das entweder über das UI selbst (M5) oder per Command sudo raspiBackupInstallUI -U tun.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Wenn dann Dir raspiBackup den Ar*** gerettet hat

    solltest Du fairerweise diese Seite besuchen und ein Trinkgeld spendieren :shy:

    Mein Raspberry Zoo

    3 * RPi1B, 2 * RPi3B, 2 * RPI4, 1 * CM4, 1 * RPi5

  • framp Zu Docker und Fehlern hatten wir schon mal Kontakt ...

    kwlorenz
    May 11, 2024 at 6:20 PM

    Grüße

  • Docker wird jetzt in der aktuellen Release 0.7.0 beim Installer standardmäßig als zu stoppender Service angezeigt. Wer seinen aktuellen Installer updaten will kann das entweder über das UI selbst (M5) oder per Command sudo raspiBackupInstallUI -U tun.

    Kurzes Feedback zur neuen Dockerintegration:

    Ich habe das Backup gestern einmal durchlafen lassen. Bei den Services habe ich die beiden Docker-Services + cron ausgewählt.

    Habe das Backup mit sudo raspiBackup -m detailed gestartet und während dem Backup einmal geschaut welche Docker Container nun gestoppt wurden. Interresanter weise waren alle Container am Laufen (restart policy = "unless-stopped", "always"), außer die beiden welche als restart policy "none" hatten. Diese wurden auch am Ende des Backups nicht mehr gestartet (aus den oben genannten Gründen #12)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!