Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi im Docker-Container

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pfischi
    antwortet
    Zitat von starwarsfan Beitrag anzeigen

    Ich nutze den Docker-Container noch gar nicht, da der Timberwolf-Server noch nicht verfügbar ist. Daher ist meine Edomi-Instanz aktuell ein Proxmox-Container.

    Aber unabhängig davon: Soviel ich weiss, muss das Einbinden anderer Pfade auch vom Container unterstützt werden. pfischi: ist dem denn so?
    Ich weiss nicht, ob ich die Frage richtig verstanden habe, aber der Container selbst bleibt "dumm". Das Mapping der Pfade geschieht in diesem Fall ausschließlich über die
    Code:
    docker run
    Syntax. Der so eingebundene Host-Pfad "überlagert den Containerpfad, alle Daten die der Container dann schreibt sind dann persistent. (das gilt für andere Richtung Host nach Container genauso).

    Ich hoffe das beantwortet die Frage

    Edit: ich selber binde zum Beispiel zusätzlich (für meine Smarthome.py-Instanz) den Ordner "/var/log" des Containers persistent ein.


    Gruss,

    Stefan
    Zuletzt geändert von pfischi; 28.03.2017, 20:30.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Zitat von tobo Beitrag anzeigen
    Nutzt ihr denn die Möglichkeit andere Pfade einzubinden?

    Edit: für Backups, Logging etc?
    Ich nutze den Docker-Container noch gar nicht, da der Timberwolf-Server noch nicht verfügbar ist. Daher ist meine Edomi-Instanz aktuell ein Proxmox-Container.

    Aber unabhängig davon: Soviel ich weiss, muss das Einbinden anderer Pfade auch vom Container unterstützt werden. pfischi: ist dem denn so?

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Nutzt ihr denn die Möglichkeit andere Pfade einzubinden?

    Edit: für Backups, Logging etc?
    Zuletzt geändert von tobo; 28.03.2017, 19:52.

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Okay, das stimmt.

    Bei Edomi aber nicht schlimm, Edomi kann im Container ein Update erfahren. Hatte ich auch gemacht, 1.48 installiert und direkt Update auf 1.49 gemacht.

    Ich bin bei Updates generell vorsichtig: Wenns läuft und keine besonderen Funktionen dazu kommen, lieber laufen lassen.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Zitat von Janosch25786 Beitrag anzeigen
    Du kannst also, wenn du nicht den Container explizit löscht, den erstellten Container nicht überschreiben und somit bleiben alle Daten vorhanden.
    Darum ging es ihm aber wohl nicht sondern um den Update-Fall. Wenn es eine neue Version des Docker-Images gibt, dann muss er einen neuen Container bauen und damit wären die Daten erstmal weg. Natürlich wird das solange fehlschlagen, solange der "alte" Container nicht gelöscht wurde (oder andere Ports verwendet werden). Aber das ändert nichts an der Tatsache bzgl. den in einem neuen Container nicht vorhandenen Daten.

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Du kannst unendliche Male start/stop machen, deine Daten bleiben erhalten!

    Wenn du den run-Befehl nochmal startest, wird er dir einen Fehler zurückgeben mit der Info, dass die Ports und der Name schon in Verwendung sind. Du kannst also, wenn du nicht den Container explizit löscht, den erstellten Container nicht überschreiben und somit bleiben alle Daten vorhanden.

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Damit ich das besser nachvollziehen kann (und vielleicht andere Docker-Neulinge), ein Beispiel, bitte korrigiert mich wenn ich was falsch verstanden habe

    das erste Mal starte ich den Container mit

    sudo docker run --name edomi -p 42900:80 -p 42901:443 -p 22222:22 -p 50000:50000/udp -p 50001:50001/udp -e KNXGATEWAY=192.168.178.4 -e KNXACTIVE=true -e HOSTIP=192.168.178.3 -d pfischi/edomi:latest


    nun beende ich den Container (Edomi herunterfahren lassen wir der Übersichtlichkeit halber hier mal weg)

    docker stop edomi

    und starte es neu

    docker start edomi

    -> Meine Änderungen (Visu, Zeitschaltuhren, ...) sind noch da. Sie sind aber nicht mehr da wenn ich den Container mit dem ersten Befehl neu erstelle. (Richtig?)

    Solange ich nichts anderes mache, bleiben meine Änderungen in einem zusätzlichen Volume (?) erhalten. Das Backup aus /var/edomi-backups kann ich bei Bedarf ja wieder einspielen. Wenn ich beim Erstellen des Containers also zusätzlich -v /var/edomi-backups /einlokalerpfad anlege bin ich safe was dass Sichern und Wiederherstellen von Edomi betrifft. Oder übersehe ich etwas?



    Zuletzt geändert von tobo; 28.03.2017, 12:10.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi

    Zitat von tobo Beitrag anzeigen
    Sehe ich das richtig, ich muss beim erstellen des Containers entscheiden welche Ports und Volumes ich freigeben will, und kann das nicht mehr ändern wenn merke dass z.B. was fehlt? Oder was hinzukommt? Dann starte ich doch wieder vom Image, und meine anderen Änderungen sind weg...
    Genau das ist ja der grosse Vorteil von Docker! Das Image ist immer der exakt gleiche Startpunkt und im Betrieb wird am Image i.d.R. nichts geändert resp. allfällige Änderungen am Image sind mit dem Start einen neuen Containers weg.


    Zitat von tobo Beitrag anzeigen
    Wie macht ihr das mit den Änderungen in Datenbank und www Ordner? Als Volume? Wenn ich das vor dem Starten des Containers festlege (zB /var/lib), bekomme ich da nicht ein Henne-Ei Problem? Weil so ja ein Pfad des Hosts in den Container gemounted wird und nicht andersherum.
    Also eigentlich ist das kein Henne-Ei-Problem sondern erfordert lediglich ein gewisses Umdenken, was den Betrieb betrifft. Das mit den eigenen IP-Adressen für jeden Container ist dabei eines der üblichen "Initialprobleme", welche bei den ersten Schritten mit Docker auftreten. Habe ich nun schon oft genau so erlebt.

    Der springende Punkt ist genau der, dass persistente Daten explizit gehandhabt werden müssen. Dabei gibt es nun zwei Möglichkeiten. Entweder es werden Host-Verzeichnisse in den Container gemountet oder es werden explizite Daten-Container verwendet, welche schlussendlich aber auch in den Container gemountet werden. Beide Varianten haben ihre Vor- und Nachteile.

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Für Portainer habe ich mich ebenfalls entschieden. Und ich muss zugeben dass nach ersten Tests das Thema IP nicht so wichtig zu sein scheint wie ich erwartet hatte.

    Sehe ich das richtig, ich muss beim erstellen des Containers entscheiden welche Ports und Volumes ich freigeben will, und kann das nicht mehr ändern wenn merke dass z.B. was fehlt? Oder was hinzukommt? Dann starte ich doch wieder vom Image, und meine anderen Änderungen sind weg.... (?)
    Wie macht ihr das mit den Änderungen in Datenbank und www Ordner? Als Volume? Wenn ich das vor dem Starten des Containers festlege (zB /var/lib), bekomme ich da nicht ein Henne-Ei Problem? Weil so ja ein Pfad des Hosts in den Container gemounted wird und nicht andersherum.

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Docker ist eine wahre Wonne in jeder Hinsicht!

    Als übersichtliche GUI für dein Docker empfehle ich noch den Portainer. Gibts auch als Docker-Container. (Läuft bei mir auf Port 9000)

    ​​​​​​

    Einen Kommentar schreiben:


  • tobo
    antwortet
    danke!

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Glaubs mir: es lohnt sich. Ich habe auch alles schrittweise umgestellt, jetzt läufst rund .

    Bei Fragen kannst du dich jederzeit melden.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • tobo
    antwortet
    Zitat von Janosch25786 Beitrag anzeigen
    https://www.google.de/amp/s/entwickl...26443.html/amp

    Nichts desto trotz, anbei Mal n Link, der dir weiterhelfen kann:
    http://blog.oddbit.com/2014/08/11/fo...nect-a-docker/​​​​​​
    Danke für die Links, die scheinen das zu sein wonach ich suche.

    Zitat von pfischi Beitrag anzeigen
    Dein Szenario schreit danach alles in Docker-Container zu packen.
    Wahrscheinlich hast Du Recht, und was Du beschreibst klingt nach einem idealen Szenario. Und wenn das allermeiste / alles in Containern läuft - warum nicht. Nur der Weg dahin ist für mich (noch) nicht überschaubar, denn ich kann und will nicht z.B. den Asterisk in einen Container verschieben und dann während des Arbeitstages feststellen dass das jetzt nicht so gut funktioniert hat... ein dutzend potentielle kleine Baustellen.

    Zitat von pfischi Beitrag anzeigen
    Dein Szenario schreit danach alles in Docker-Container zu packen. Jeder Service kann dann einfach per Hostname=Containernamen kommunizieren. ...
    Und bis ich sicher weiß habe wie das stabil läuft, erscheint mir ein Weg möglichst nahe am bestehenden System als der Beste.

    Jetzt lese ich erstmal die verlinkten Artikel in Ruhe, danke für euren Input.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Dein Szenario schreit danach alles in Docker-Container zu packen. Jeder Service kann dann einfach per Hostname=Containernamen kommunizieren. Den ELK-Stack nutze ich selber als Docker, genauso den Asterisk-Server, sowie Nextcloud. Die Daten der einzelnen Container sind persistent auf einer NAS gemounted und werden bei jedem Erstellen der einzelnen Container einfach dazu gemapped. Hinzu kommen bei mir noch Plex, OpenVPN, mehrer nginx-Container. Achja, eibd hat auch einen eigenen Container. Jeder Container kennt sich per Namen, feste IPs brauch es nicht mehr. Genau darin liegt ja u.a. die Stärke von Docker. Möchtest du es anders haben, beraubst du dich der Felxibilität und Portabilität. All die aufgezählten Container sind insgesamt 10 Dockefiles, die innerhalb von 5min gebaut und voll funtionsähig sind (inkl. aller Daten).


    Tut mir Leid, ich bin nicht überzeugt

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • Janosch25786
    antwortet
    Zitat von tobo Beitrag anzeigen
    Herzlichen Glückwunsch zu Deinem Beschriftungsgerät.



    Ja, das merke ich. Hast Du soweit Ahnung von Docker dass Du meine eigentliche Frage beantworten kannst? Wenn nein, ... ich sehe nicht warum Du mit mir die Sinnhaftigkeit meiner Frage diskutieren musst.

    (Und vielleicht finde ich es ja scheisse irgendwelche Schildchen auf meine Geräte zu kleben. Oh mann.)

    Freue mich wenn das jetzt niemanden davon abhält sein Wissen zu teilen - danke im Voraus
    Wenn du für dein Problem den Sinn erklären könntest, dann wäre eine Hilfe möglich

    Ich habe mehrere, teilweise bewusst extrem simple Möglichkeiten gegeben für das, was du als Problembeschreibung gibst.

    Selbst mit eigener IP wirst du weiter einen Port angeben müssen (hier mag man mich gerne korrigieren). Wo ist also die Hilfe für den Aussenstehenden, wenn du eine eigene IP angibst?

    Aber nun gut, anscheinend fehlt mir die Fantasie, wieso man eine absolute nachhaltige einfache Dockerlösung verkomplizieren muss. Hier Mal ein Link, was Docker so genial macht und dein Vorhaben nicht wirklich schlüssig erscheinen lässt:
    https://www.google.de/amp/s/entwickl...26443.html/amp

    Nichts desto trotz, anbei Mal n Link, der dir weiterhelfen kann:
    http://blog.oddbit.com/2014/08/11/fo...nect-a-docker/

    ​​​​​​

    Einen Kommentar schreiben:

Lädt...
X