NEWS
Docker: /opt/iobroker, Influxdb2, Backups und mehr?
-
Moin,
ich habe viele Fragen und versuche meinen Post mal logisch aufzubauen.
Der Hintergrund:
Ich möchte meinen laufenden ioBroker und alles, was dazugehört in einen Container verschieben. Nun graust es mir etwas vor der Sache mit dem Volume auf dem Host-System zum Persistieren der Nutzdaten. Ich möchte nämlich auch piHole installieren und wer weiß, was da später noch hinzu kommt. Und um dann auf der sicheren (und übersichtlicheren) Seite zu sein, möchte ich gerne "containern".Die Hardware:
Ich habe einen Pi4 mit 8GB RAM, der das stemmen können sollte. Er sitzt samt bootbarer SSD (ohne MicroSC) neben einem KNX-Visu-Server auf der Hutschiene im Verteilerkasten und ist für Spielereien und komplexere Dinge "on top". Also, falls er mal ausfällt, ist das kein Drama.Die aktuelle Software:
Es läuft bullseye, was aber nach erfolgreicher "Containerisierung" samt funktionierendem Backup in Zukunft auf bookworm aktualisiert werden soll.Als Pakete sind ioBroker und Influx2 (zum Loggen von Temperaturverläufen etc.) installiert.
Im ioBroker selbst habe ich natürlich einige Adapter installiert. Zu den wichtigsten gehören OpenKNX,
NodeRed und VIS. Backups mache ich aktuell via BackItUp in die Cloud, und zwar von ioBroker, Node-Red und InfluxDB.Das Ziel:
Im besten Fall möchte ich am Ende auf dem PiOS nur noch Docker mit Portainer installiert haben. Heißt grundsätzlich:- ioBroker samt NodeRed-Adapter, VIS & Co in Docker bringen
- Influx2 in Docker bringen
Der Plan*
Docker habe ich erst einmal nur installiert und per hello-world getestet. Nichts weiter. Jetzt mache ich mal theoretisch weiter und dann kann mir hoffentlich jemand sagen, was ich falsch machen würde- Ich stoppe ioBroker und Influx2
iobroker stop sudo service influxdb stop
- Ich installiere und starte Portainer
docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest
-
Über Portainer den Container für ioBroker von Buanet installieren. Den Docker-Volume-Pfad würde ich jetzt anpassen. Und zwar zu iobroker_data.
-
Den Ordner /opt/ioBroker nach iobroker_data kopieren. Dann ist auf dem Host alles von /opt/iobroker direkt in iobroker. Und der Container schriebt und liest dann im laufenden Betrieb alles aus dem Host-Volume, was er in /opt/iobroker suchen würde.
sudo cp -R /opt/iobroker/* /var/lib/docker/volumes/iobroker_data
-
Über Portainer den offiziellen Container für Influx2 installieren. Den Volume-Pfad würde ich jetzt anpassen. Und zwar zu influxdb2_data
-
Den Ordner /var/lib/influxdb2 nach influxdb2 kopieren.
sudo cp -R /var/lib/influxdb2/* /var/lib/docker/volumes/influxdb2_data
-
Ich starte den Container von Influx2 (mit -p 8086:8086 und -v influxdb2_data:/var/lib/influxdb2)
-
Ich starte den Container von ioBroker (mit -p 8181:8181 und -p 8182:8182 (für VIS) und -p 1880:1880 für NodeRed und und -v iobroker_Data:/opt/iobroker/)
-
Beten
Die Fragen
-
Muss ich NodeRed - was ja nur als ioBroker-Adapter installiert ist - auch stoppen, bevor ich wechsel? Oder reicht es, wenn ioBroker gestoppt ist? Einen NodeRed-Service finde ich auf der Shell nicht.
-
Ist es korrekt, dass ich für jeden Docker-Container einen eigenen Share mache?
-
Ist es sinnvoll Influx2 als Container laufen zu lassen? Ist das "ganz normal"? Eine Datenbank ist ja eigentlich zum Persistieren da, und warum man das als Container laufen lassen sollte passt nicht ins Konzept. Oder doch?
-
Wie aktualisiere ich nodeJS & Co im Container? Auf buanet.de steht, dass man am Besten immer den Container über Portainer aktualisiert. Ist das best practice? Muss ich da noch mehr beachten?
-
Der js-controller wird auf buanet.de seperat erwähnt, ich verstehe aber nicht: Der läuft auf dem Host, wird aber von Container genutzt und darum muss der Container für ein Update gestoppt werden? Und das geht scheinbar nicht mehr zuverlässig über
iobroker stop
sondern mit der Holzhammermethode über
pkill -u iobroker
Aber muss man Docker nicht sagen, dass der Container z.B. den js-controller vom Host nutzen soll?
- Muss ich weitere Versichnisse einbinden, falls ich ein manuelles Backup der Daten auf Dateiebene machen möchte? Aktuell würde ich sichern:
/var/lib/docker/volumes/*
und hätte in meiner Theorie damit die Nutzdaten von Influxdb2 und ioBroker samt NodeRed, OpenKNX, VIS etc. gesichert. Die Container selbst natürlich nicht.
- Möchte ich nun auf bookworm upgraden, würde ich aus Punkt 4 eine Sicherung machen und das komplette PiOS neu aufspielen. Danach Docker, Portainer, nodeJS und die Container installieren. Backup aus /var/lib/docker/volumes/* zurückspielen...fertig?
Feuer frei
Wer bis hierher gekommen ist: Danke! Ich bin für jegliche Tipps und Kommentare, was es vllt. noch zu beachten gibt, dankbar. -
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Nun graust es mir etwas vor der Sache mit dem Volume auf dem Host-System zum Persistieren der Nutzdaten.
Ich glaube, du machst dir da zu viele Sorgen und es dir mit der Anlage von Volumes auch unnötig schwer.
Definiere einfach ein "root" Verzeichnis, in welchem deine persistenten Daten liegen werden, z.B. "/opt/docker". Portainer liegt dann unter "/opt/docker/portainer", ioBroker unter "/opt/docker/iobroker" und so weiter. Ganz easy und vor allem sehr einfach durchschaubar.Ich habe einen Pi4 mit 8GB RAM, der das stemmen können sollte.
Kein Problem. Und lass dir von keinem erzählen, dass man einen PI mit dem Docker Overhead nicht belasten sollte.
Docker habe ich erst einmal nur installiert und per hello-world getestet. Nichts weiter. Jetzt mache ich mal theoretisch weiter und dann kann mir hoffentlich jemand sagen, was ich falsch machen würde
Um Problemen aus dem Weg zu gehen, würde ich einfach den Weg über backup und restore gehen. Das ist sauber und gleich geübt.
- Ich installiere und starte Portainer
docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest
Mit dem oben gesagten
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker/portainer/data:/data portainer/portainer-ce:latest
- Muss ich NodeRed - was ja nur als ioBroker-Adapter installiert ist - auch stoppen, bevor ich wechsel? Oder reicht es, wenn ioBroker gestoppt ist? Einen NodeRed-Service finde ich auf der Shell nicht.
wird über ioBroker Restore wiederhergestellt.
- Ist es korrekt, dass ich für jeden Docker-Container einen eigenen Share mache?
kein Share. Ein Verzeichnis.
- Ist es sinnvoll Influx2 als Container laufen zu lassen? Ist das "ganz normal"? Eine Datenbank ist ja eigentlich zum Persistieren da, und warum man das als Container laufen lassen sollte passt nicht ins Konzept. Oder doch?
Passt. Du hast doch die persistenten Daten in einem separaten Verzeichnis. Diese überleben jeden Neustart und jedes Update.
- Wie aktualisiere ich nodeJS & Co im Container? Auf buanet.de steht, dass man am Besten immer den Container über Portainer aktualisiert. Ist das best practice? Muss ich da noch mehr beachten?
Hier steht alles, was du wissen musst. Das ist aktuell:
https://docs.buanet.de/iobroker-docker-image/docs/#updates-upgrades
- Der js-controller wird auf buanet.de seperat erwähnt, ich verstehe aber nicht: Der läuft auf dem Host, wird aber von Container genutzt und darum muss der Container für
Das hast du falsch verstanden. Der js-controller als "Kern" des ioBroker läuft im buanet Container.
- Muss ich weitere Versichnisse einbinden, falls ich ein manuelles Backup der Daten auf Dateiebene machen möchte? Aktuell würde ich sichern:
/var/lib/docker/volumes/*
Wie oben beschrieben, das "root" Verzeichnis inkl. aller Unterverzeichnisse sichern. Und unabhängig davon noch saubere Sicherungen über BackitUp für DB und ioB.
und hätte in meiner Theorie damit die Nutzdaten von Influxdb2 und ioBroker samt NodeRed, OpenKNX, VIS etc. gesichert. Die Container selbst natürlich nicht.
Ja, korrekt.
- Möchte ich nun auf bookworm upgraden, würde ich aus Punkt 4 eine Sicherung machen und das komplette PiOS neu aufspielen. Danach Docker, Portainer, nodeJS und die Container installieren. Backup aus /var/lib/docker/volumes/* zurückspielen...fertig?
Wichtig dabei ist lediglich, dass die Rechte unangetastet bleiben bzw. wiederhergestellt werden.
Wer bis hierher gekommen ist: Danke! Ich bin für jegliche Tipps und Kommentare, was es vllt. noch zu beachten gibt, dankbar.
Grundsätzlich würde ich gleich mit den Stacks in Portainer starten, das macht das Docker-Leben nochmal wesentlich einfacher:
Bei Änderungen einfach eine "Datei" anpassen, neudeploy, fertig. Keine kryptischen Befehle auf der Kommandozeile, mit der Sicherung des Stacks kann man seine gesamte Docker-Umgebung aus genau einer Datei neu aufbauen, etc. -
@marc-berg said in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Um Problemen aus dem Weg zu gehen, würde ich einfach den Weg über backup und restore gehen. Das ist sauber und gleich geübt.
- Ich installiere und starte Portainer
docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest
Mit dem oben gesagten
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker/portainer/data:/data portainer/portainer-ce:latest
- Muss ich NodeRed - was ja nur als ioBroker-Adapter installiert ist - auch stoppen, bevor ich wechsel? Oder reicht es, wenn ioBroker gestoppt ist? Einen NodeRed-Service finde ich auf der Shell nicht.
wird über ioBroker Restore wiederhergestellt.
Ja, guter Punkt. Ich kann das Backitup-Backup "produktiv" testen.
Backup aus der Cloud holen, nach /opt/iobroker/backup auf dem Host kopieren undiobroker restore
direkt im Container aufrufen, richtig?
- Ist es korrekt, dass ich für jeden Docker-Container einen eigenen Share mache?
kein Share. Ein Verzeichnis.
Falsches Wording, stimmt. Ich war beim teilen zw. Host und Gast
- Ist es sinnvoll Influx2 als Container laufen zu lassen? Ist das "ganz normal"? Eine Datenbank ist ja eigentlich zum Persistieren da, und warum man das als Container laufen lassen sollte passt nicht ins Konzept. Oder doch?
Passt. Du hast doch die persistenten Daten in einem separaten Verzeichnis. Diese überleben jeden Neustart und jedes Update.
Ja, es ist trotzdem irgendwie seltsam etwas für Datenspeicherung in einem Container zu haben. Sehe ich aber auch so, wie du. War nur eine Frage am Rande.
- Wie aktualisiere ich nodeJS & Co im Container? Auf buanet.de steht, dass man am Besten immer den Container über Portainer aktualisiert. Ist das best practice? Muss ich da noch mehr beachten?
Hier steht alles, was du wissen musst. Das ist aktuell:
https://docs.buanet.de/iobroker-docker-image/docs/#updates-upgrades
Jup, da war ich
- Der js-controller wird auf buanet.de seperat erwähnt, ich verstehe aber nicht: Der läuft auf dem Host, wird aber von Container genutzt und darum muss der Container für
Das hast du falsch verstanden. Der js-controller als "Kern" des ioBroker läuft im buanet Container.
Super, danke, ich hab mich da wohl verheddert, weil dort steht, er sei in /opt/iobroker installiert. Ist aber ja "im Container"
- Möchte ich nun auf bookworm upgraden, würde ich aus Punkt 4 eine Sicherung machen und das komplette PiOS neu aufspielen. Danach Docker, Portainer, nodeJS und die Container installieren. Backup aus /var/lib/docker/volumes/* zurückspielen...fertig?
Wichtig dabei ist lediglich, dass die Rechte unangetastet bleiben bzw. wiederhergestellt werden.
Guter Hinweis für die Sicherung auf Dateiebene, danke. Ich werde wohl tar bemühen mir ein Archiv zu machen, das ich mit Windows abholen kann.
Wer bis hierher gekommen ist: Danke! Ich bin für jegliche Tipps und Kommentare, was es vllt. noch zu beachten gibt, dankbar.
Grundsätzlich würde ich gleich mit den Stacks in Portainer starten, das macht das Docker-Leben nochmal wesentlich einfacher:
Bei Änderungen einfach eine "Datei" anpassen, neudeploy, fertig. Keine kryptischen Befehle auf der Kommandozeile, mit der Sicherung des Stacks kann man seine gesamte Docker-Umgebung aus genau einer Datei neu aufbauen, etc.Danke, nehme ich mit auf meine Agenda. Ich habe mit Portainer nur etwas YT-Video-Kenntnisse...
Puh, herzlichen Dank dir! Ich bin immer etwas vorsichtig, weil ich im Fall von Linux nur gefährliches Halbwissen habe und schon das ein oder andere Spielsystem bis hin zu für mich zu der Zeit nicht raparierbarer "kernel panic" zerschossen habe
-
@sleepwalker sagte in Docker: /opt/iobroker, Influxdb2, Backups und mehr?:
Ich kann das Backitup-Backup "produktiv" testen.
Backup aus der Cloud holen, nach /opt/iobroker/backup auf dem Host kopieren undiobroker restore
direkt im Container aufrufen, richtig?
Ja, das geht. Mit den neuen Backitup-Versionen kannst du das Backup auch per Weboberfläche down- bzw- uploaden und musst dich nicht mehr auf der Kommandozeile rumtreiben, falls da eine Aversion besteht. Aber, unbedingt diese zusätzlichen drei Ports mappen:
https://github.com/simatec/ioBroker.backitup/blob/master/docs/de/backitup.md#docker-unterstützung
Ja, es ist trotzdem irgendwie seltsam etwas für Datenspeicherung in einem Container zu haben. Sehe ich aber auch so, wie du. War nur eine Frage am Rande.
Ist ja nicht "IM" Container.
Guter Hinweis für die Sicherung auf Dateiebene, danke. Ich werde wohl tar bemühen mir ein Archiv zu machen, das ich mit Windows abholen kann.
Oh ja, wenn Windows in der Kette ist, dann ist es um so mehr ein Thema.
Danke, nehme ich mit auf meine Agenda. Ich habe mit Portainer nur etwas YT-Video-Kenntnisse...
Und gleich einen Plan machen, welches Netzwerk du nutzen willst. Das "mitgelieferte" Bridge-Netzwerk würde ich nicht nutzen, weil dort kein DNS innerhalb des Netzes geht. Wenn du ein eigenes Bridge-Netzwerk erstellst, kannst du innerhalb des Netzwerkes mit den Container-/Hostnamen arbeiten und kannst z.B. die InfluxDB direkt ansprechen.
-
@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