NEWS
Docker: /opt/iobroker, Influxdb2, Backups und mehr?
-
@marc-berg
Sehr guter Einwand, danke! Ich habe mir gerade etwas seichte Kost als Video gegeben und schwanke zwischen User-Defined Bridge und IP VLAN L3. Aus Faulheit (und weil ich vermutlich nicht so arg viele Container laufen haben werde) wird es wohl auf ersteres hinauslaufen. MAC VLAN und IP VLAN L2 haben mich jetzt nicht so angesprochen.
Für Interessierte, ist auf Englisch, aber super gut erklärt: https://www.youtube.com/watch?v=bKFMS5C4CG0Nochmal kurz zurück zu den Stacks: Wenn ich dich richtig verstehe, ist deine Empfehlung einfach alle Container in einem Stack laufen zu lassen, richtig? Falls ja, was passiert, wenn ich bspw. nur einen Container wiederherstellen möchte? Geht das auch oder bin ich da an den kompletten Stack gebunden?
-
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
ist deine Empfehlung einfach alle Container in einem Stack laufen zu lassen, richtig?
Das kann man so machen. Wenn man loslegt und vielleicht ständig neu starten muss, kann man zunächst auch jeden Container in einen eigenen Stack legen. Später fasst man das zusammen, es ist ja nicht viel mehr als ein copy/paste. Da muss man ein Gefühl für entwickeln.
Falls ja, was passiert, wenn ich bspw. nur einen Container wiederherstellen möchte? Geht das auch oder bin ich da an den kompletten Stack gebunden?
Jeder Container bleibt eigenständig und lässt sich separat wiederherstellen, starten, stoppen. Wenn du allerdings einen Stack stoppst, werden alle Container im Stack gelöscht und beim Starten wieder angelegt. Das gleiche gilt für Netzwerke, wenn sie mit im Stack definiert sind.
-
@marc-berg Danke, du hast mir echt geholfen. Ich gehe das am Wochenende mal an und berichte hier
-
@marc-berg
Mahlzeit!So, ich habe jetzt tatsächlich alles so laufen, wie vorher, nur als Container. Es gab ein paar Stolperfallen, aber die waren alle lösbar.
Ich konnte und kann z.B. nicht per Bash auf die Volumes zugreifen. Also war nichts mit "mal eben die Daten vom Host in die Volumes kopieren". Ist aber auch kein Drama gewesen ich habe mit Backitup fast alles wiederherstellen können. An den Namen des Buckets in Influx konnte ich mich nicht erinnern, aber das war im Endeffekt auch nicht wild. Ist jetzt aber notiert Der HomeConnet-Adapter muss nochmal angepasst werden, aber der interessiert mich gerade nicht so. Ansonsten ist alles, bis auf Influx gestartet. War richtig cool.Was mich aber etwas mehr Zeit gekostet hat, waren die fehlenden beiden Paletten aus NodeRed, die werden nämlich nicht mitgesichert. Da ich einmal aus Versehen nur eine ähnliche Palette installiert hatte, gab es beim erneuten Installieren der richtigen Palette Probleme (node-red-contrib-suncron != node-red-contrib-cb-suncron). Ein nochmaliges Wiederherstellen vom NodeRed-Backup half dann nur noch.
Was mir aber mit Abstand am wenigsten gefällt, ist das Neuerstellen eines Containers in Portainer, bei dem man z.B. eine Portweiterleitung vergessen hat. Umständlicher geht's ja nicht. Immer alles neu einstellen. Ports, Netzwerk, Volume, Umgebungsvariablen, ...
Eine Option für ein "Template" für einen Container wäre super. Da ich das Thema "Stack" etwas nach hinten geschoben habe, würde ich aktuell tatsächlich die Kommandozeile zum Starten bevorzugen. Da ist das Anpassen wesentlich angeneher und zeitsparender. Mal davon abgesehen, dass ich den Container alle paar Monate für Updates mal neu starten muss und dann keine Lust habe, wieder alle Einstellungen zusammenzukratzen.Jetzt befasse ich mich definitiv mit Stacks, bevor ich weiter mache
Kurzes PS: Ich sehe gerade, dass man sich selbst Templates zusammenschreiben kann, in denen die ganze Konfiguration untergebracht werden kann.
Aber:
Eine Frage bleibt nun aber übrig: Ist das mit dem Zugriff auf die Docker-Volumes normal? Geht das nur über Docker-Befehle, wenn man dort etwas hin und her kopieren möchte? Würde den Kram ja gerne einmal auf Dateiebene sichern...
-
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Ich konnte und kann z.B. nicht per Bash auf die Volumes zugreifen. Also war nichts mit "mal eben die Daten vom Host in die Volumes kopieren".
Verstehe ich nicht. Siehe weiter unten.
Was mich aber etwas mehr Zeit gekostet hat, waren die fehlenden beiden Paletten aus NodeRed, die werden nämlich nicht mitgesichert. Da ich einmal aus Versehen nur eine ähnliche Palette installiert hatte, gab es beim erneuten Installieren der richtigen Palette Probleme (node-red-contrib-suncron != node-red-contrib-cb-suncron). Ein nochmaliges Wiederherstellen vom NodeRed-Backup half dann nur noch.
Stimmt, das ist nicht in der ioBoker Sicherung enthalten, aber dazu gibt es ja das zusätzliche Node-Red Backup.
Was mir aber mit Abstand am wenigsten gefällt, ist das Neuerstellen eines Containers in Portainer, bei dem man z.B. eine Portweiterleitung vergessen hat. Umständlicher geht's ja nicht. Immer alles neu einstellen. Ports, Netzwerk, Volume, Umgebungsvariablen, ...
Nein, das stimmt nicht. In Portainer auf "Duplicate/Edit" klicken, Optionen anpassen/ergänzen, danach auf "Deploy", fertig.
Kurzes PS: Ich sehe gerade, dass man sich selbst Templates zusammenschreiben kann, in denen die ganze Konfiguration untergebracht werden kann.
Wie gesagt, nicht notwendig.
Eine Frage bleibt nun aber übrig: Ist das mit dem Zugriff auf die Docker-Volumes normal? Geht das nur über Docker-Befehle, wenn man dort etwas hin und her kopieren möchte? Würde den Kram ja gerne einmal auf Dateiebene sichern...
Meine Empfehlung weiter oben war, keine Volumes zu verwenden (sondern "Binds"). Aber selbst, wenn man Volumes nutzt (die nicht auf CIFS/NFS basieren), kann man über den Pfad "/var/lib/docker/volumes/<volume-name>/_data" auf die Daten zugreifen.
-
@marc-berg said in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Ich konnte und kann z.B. nicht per Bash auf die Volumes zugreifen. Also war nichts mit "mal eben die Daten vom Host in die Volumes kopieren".
Verstehe ich nicht. Siehe weiter unten.
Was mich aber etwas mehr Zeit gekostet hat, waren die fehlenden beiden Paletten aus NodeRed, die werden nämlich nicht mitgesichert. Da ich einmal aus Versehen nur eine ähnliche Palette installiert hatte, gab es beim erneuten Installieren der richtigen Palette Probleme (node-red-contrib-suncron != node-red-contrib-cb-suncron). Ein nochmaliges Wiederherstellen vom NodeRed-Backup half dann nur noch.
Stimmt, das ist nicht in der ioBoker Sicherung enthalten, aber dazu gibt es ja das zusätzliche Node-Red Backup.
Selbst ein Backup von NodeRed beinhaltet nicht die manuell installierten Paletten. Das ist groß in einem roten Hinweis"schild" in der Admin-Oberfläche bzw. der Instanz-Konfiguration zu lesen. Warum das so ist, weiß ich allerdings nicht. Ich habe es schlicht nicht beachtet.
Was mir aber mit Abstand am wenigsten gefällt, ist das Neuerstellen eines Containers in Portainer, bei dem man z.B. eine Portweiterleitung vergessen hat. Umständlicher geht's ja nicht. Immer alles neu einstellen. Ports, Netzwerk, Volume, Umgebungsvariablen, ...
Nein, das stimmt nicht. In Portainer auf "Duplicate/Edit" klicken, Optionen anpassen/ergänzen, danach auf "Deploy", fertig.
Kurzes PS: Ich sehe gerade, dass man sich selbst Templates zusammenschreiben kann, in denen die ganze Konfiguration untergebracht werden kann.
Wie gesagt, nicht notwendig.
Zu spät, ich habe welche erstellt und bin begeistert
Eine Frage bleibt nun aber übrig: Ist das mit dem Zugriff auf die Docker-Volumes normal? Geht das nur über Docker-Befehle, wenn man dort etwas hin und her kopieren möchte? Würde den Kram ja gerne einmal auf Dateiebene sichern...
Meine Empfehlung weiter oben war, keine Volumes zu verwenden (sondern "Binds"). Aber selbst, wenn man Volumes nutzt (die nicht auf CIFS/NFS basieren), kann man über den Pfad "/var/lib/docker/volumes/<volume-name>/_data" auf die Daten zugreifen.
Mist! Das habe ich wohl falsch verstanden. Ich schaue mal, ob ich das noch umbiegen möchte, sollte nicht der Aufwand sein.
Ich melde mich sicher nochmal, bevor wirklich alles rund läuft.
PS: Dass DNS in der eigenen Bridge nutzbar ist, ist Gold wert!
-
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Selbst ein Backup von NodeRed beinhaltet nicht die manuell installierten Paletten.
Ja und nein. Seit einiger Zeit werden nach Abschluss des Restores alle installiert. Es kann aber sein, dass die entsprechende Backitup-Version noch nicht im Stable Repository ist.
-
@marc-berg Mahlzeit nochmal!
So, ich habe die Dateien aus den Volumes für ioBroker und Influx extrahiert, über einen temporären Container mit Busybox und der Option --volumes-from samt einem Bind über -v
Klappte nach etwas Probieren ziemlich gut. Nun sind die Nutzdaten der Container auf dem Host-Dateisystem zugreifbar, sehr gut!Dann habe ich meine Templates für ioBroker und Influx in ein einziges Template verschoben und daraus einen Stack für die beiden erstellt. Die beiden sind jetzt in ihrem eigenen Bridge-Netzwerk und werkeln vor sich hin. Voll super!
Jetzt kommt vermutlich AdGuard statt piHole zum Einsatz. Das schiebe ich in sein eigenes Netzwerk und habe das dann isoliert zum ioBroker. Ich freu mich!
Jetzt habe ich noch eine Grundlegende Frage zu Containern und Volumes:
Mir ist aufgefallen, dass Influx immer ein zweites Volume erstellt, für eine eventuelle Konfiguration. Ich habe lediglich /var/lib/influxdb2 als Bind eingebunden, wie im Quickstart angegeben (https://hub.docker.com/_/influxdb). Das zweite Volume wird automatisch erstellt, kümmert mich aber nicht.Die eigentliche Frage lautet: Ist Docker so intelligent, dass es automatisch Volumes erstellt, sobald ein Container Daten schreiben möchte? Oder ist das irgendwo in den Containern hinterlegt? Das würde ja im Endefeffekt heißen, dass man sich theoretisch überhaupt nicht um Volumes kümmern muss?! Wenn man denn so gar keine Kontrolle behalten möchte...
-
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Die eigentliche Frage lautet: Ist Docker so intelligent, dass es automatisch Volumes erstellt, sobald ein Container Daten schreiben möchte?
Das hat mit Intelligenz nichts zu tun. Beim Erzeugen eines Images kann der Ersteller mitgeben, welche Volumes automatisch erzeugt werden sollen, falls man diese bei der Container-Erstellung nicht explizit angibt. Welche dies sind, kann man z.B. herausfinden, indem man in Portainer unter "Images-->Image layers" schaut. Bei der InfluxDB sieht man dann:
Für alle anderen geschriebenen Daten gilt das (zum Glück) nicht.
Auf diese Weise werden die Daten persistent, auch wenn man vergessen sollte, die Volumes zu mappen.
-
@marc-berg
Alles klar, danke für die Erläuterung.AdGuard läuft auch schon in seinem eigenen Stack und Netz und lässt sich über den Hardware-Router ganz einfach ansprechen.
Tausend Dank an dich! Jetzt mache ich nur noch meine kleine Doku fertig und dann kann ich peu à peu weitermachen. Vermutlich werde ich bei Gelegenheit mal den Pi plätten und Bookworm drauf machen. Die Backups tun, das weiß ich jetzt. Docker und Portainer sind im Nu installiert und den Rest der Bindings sichere ich mir weg