Multicast-Pakete in einen Dockercontainer weiterleiten

Status
Für weitere Antworten geschlossen.

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Hallo in die Runde,

ich suche eine Möglichkeit Multicast Datenverkehr zu einem Dockercontainer zu ermöglichen.

Deswegen die Frage ob jemand eine Möglichkeit kennt Multicast-Pakete in einen Dockercontainer weiterzuleiten und es schon realisiert hat. (Synology unterstützt den net-Parameter nicht!).

Ganz allgemein scheint Multicast-Weiterleitung wohl noch eine Baustelle bei Docker zu sein wenn man diesebezüglich etwas im Netz rumsucht. Aber vielleicht habe ich den richtigen Einstiegspunkt auch nicht gefunden.

Ich hatte die Frage auch an Synology gestellt. Antwort:

Please try to use a virtual switch for multicast packages. Search in internet for exact tutorial please or contact docker team/support directly for your request please. We are asking for understanding.

Kennt jemand ein "virtual switch" und wie es einzusetzen wäre ?
Ich habe etwas im Internet gesucht, aber werde nicht schlau aus dem was ich so finde .

viele Grüße und ein schönes WE
 
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Seit DSM6 respektiert das "Syno-Docker" auch den Parameter --net=host.

Unter DSM5.2 wird er nur beim ersten Start respektiert.

Was man bei DSM5.2 ausprobieren könnte: den Container so starten, dass er beim Herunterfahren wieder gelöscht wird -> docker run -d --rm...
wobei ich mir nicht sicher bin, ob --rm mit -d kombinierbar ist.

Falls das alles nichts hilft: unter https://github.com/docker/docker/issues/3043 wird pipework als mögliche Lösung erwähnt.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Danke für deine Unterstützung.
"--net=host" wird bei mir immer abgelehnt, auch wenn ich den Container nach einem Löschen aus dem Image neu starte.

Pipework scheint mir interessant zu sein wobei ich momentan mir noch kein Bild darüber machen konnte wie das (auf Synology) einzusetzen ist. Muß ich mal schauen...

Falls schon jemand Erfahrungen mit Pipework gemacht hat sind diese gerne willkommen !

VG
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
"--net=host" wird bei mir immer abgelehnt, auch wenn ich den Container nach einem Löschen aus dem Image neu starte.

Du machst dann schon über die Shell oder? Die Funktion "Mit Docker run starten" übernimmt nicht alle Parameter und ist damit ziemlich nutzlos. Wahrscheinlich der Grund, warum die Funktion in DSM6 nicht mehr vorhanden ist...

Ich sehe gerade in DMS6 kann man tatsächlich doch das Netzwerk über den Ausführungs-Assistenten auswählen.

Am einfachsten währe es wohl Deine DS415+ auf DSM 6.0.2 zu aktualisieren und die erweiterten Funktionen dort zu verwenden.
VirtualBox soll da wohl nicht mehr laufen, aber alles was unter Linux läuft, bekommst Du sicherlich auch als Docker-Image.
 
Zuletzt bearbeitet:

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Du machst dann schon über die Shell oder?

Guter Hinweis ... hatte ich mt docker run probiert. Das versuche ich jetzt mal von der shell. Vielleicht habe ich damit mehr Erfolg.

Ja, Upgrade wäre die beste Variante. Allerdings muß ich sicher sein dass meine Anforderungen mit Docker erfüllt werden können. Ich betreibe zwei virtuelle FHEM-Instanzen, eine für Entwicklung und eine produktive in Virtualbox. Da Virtualbox mit dem neuesten 6er DSM nicht mehr funktioniert kann ich nicht upgraden ohne Docker genauestens vorher getestet zu haben.
Für FHEM entwickle ich aktiv mit und kann/will mir auch deswegen keine größeren Ausfälle erlauben, von dem ganzen Stress mit der dann evtl. nicht mehr laufenden eigenen Haussteuerung abgesehen.
Ich gehe deswegen behutsam vor.
Für FHEM habe ich schon ein Docker Image laufen, aber es geht eben kein Multicast. Bleibt auch noch die Frage ob ZWEI Dockerinstanzen (soviel ich weiß bleibt die IP-Adresse immer gleich, die des Host) auf der Syno laufen können und BEIDE Multicast verarbeiten können.
Momentan ziemlich viele Unbekannten ....
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Jetzt habe ich den Startstring, den ich sonst in der Docker-GUI einsetze:

docker run --name Test -p 5901:5901 -p 6901:6901 --privileged -v /fhem/fhemtest:/opt/fhem -v /fhem/fhem-code:/fhem-code -p 7172:7072 -p 8183:8083 -p 8184:8084 -p 8185:8085 -p 22221:2222 ubuntu-xfce-vnc-fhem bash

testweise genauso von der Shell aus gestartet. Damit läuft er erst garnicht an. D.h. es wird ein Container erstellt der sich aber nicht starten lässt. Gebe ich genau denselben Startstring in der Docker GUI (run-Option) an, klappt es einwandfrei.

Bin jetzt erstmal an dieser Stelle am Suchen ....

EDIT: leider funktioniert der oben angegebene Aufruf NUR über die Docker GUI mit der run-Option. Von der Syno-Shell (als root) ist der Container nicht zum Starten zu bewegen. Ideen ?
 
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Port und Volume Mapping sollten über die UI problemlos gehen.
Ob --name und --privileged gehen weiss ich nicht, wobei letzteres als Haken im Assitenten auch vorhanden ist und gehen sollte.

Die UI akzeptiert nur eine Untermenge der Parameter, die man auf der Shell verwenden kann.

Das von Dir angegene Docker Image wird bei mir nicht gefunden. Auf Dockerhub finde ich es auch nicht.
Stammt das aus einem privaten Repo?

<offtopic>
Das letzte mal, als ich mit FHEM zu tun hatte, bestand das nur aus einer Web-Oberfläche, über die man sogar die ganzen Config-Dateien editieren konnte.
Bist Du Dir sicher, dass Du den Overhead von XFCE und VNC überhaupt brauchst?
</offtopic>
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Versuch es mal mit diesem schlankeren Image:
Code:
docker run -ti --rm  -p 8083:8083 michaelatdocker/fhem

Achtung: Du gekommst mit '-ti --rm' die Shell angezeigt und der Container wird beim beenden gelöscht. Nachdem alles läuft, solltest Du das gegen '-d' ersetzen
Läuft bei mir Problemlos auf DSM5.2 über die Shell.

Code:
docker run -ti --rm  -p 8083:8083 -v /volume1/docker/fhem/config:/opt/fhem  michaelatdocker/fhem
Geht nur dann, wenn Du in /volume1/docker/fhem/config eine Kopie von FHEM liegen hast. Dann könntest Du aber auch alles über den Netzwerk-Share editieren.

Die Kopie könntest Du dir aus /opt/fhem ziehen, indem Du dein Volume NICHT in /opt/fhem hängst bspw 'docker run -ti --rm -p 8083:8083 -v /volume1/docker/fhem/config:/opt/fhem2 michaelatdocker/fhem bash' und dann auf der shell: 'cp -R /opt/fhem/* /opt/fhem2/'. Dann den Container runterfahren und mit 'docker run -ti --rm -p 8083:8083 -v /volume1/docker/fhem/config:/opt/fhem michaelatdocker/fhem' neu starten. Dann hast Du die Konfigurations-Dateien auf Deiner Syno und kannst sie in den Container reinmounten.
v /volume1/docker/fhem/config:/opt/fhem2

Limitierungen von "Mit Docker ausführen":
https://www.synology.com/en-us/knowledgebase/DSM/help/Docker/Docker unter "To launch a container with an image:"
 
Zuletzt bearbeitet:

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Stammt das aus einem privaten Repo?

Ja. Aber es basiert auf der Grundlage von consol/ubuntu-xfce-vnc.

Bist Du Dir sicher, dass Du den Overhead von XFCE und VNC überhaupt brauchst?

Die graphischen Elemente vereinfachen mir die Entwicklungsarbeit mit FHEM. Für den FHEM-Betrieb braucht man sie natürlich nicht.

Ich bin auch davon ausgegangen dass die Shell alle Elemente die in der GUI verwendbar sind unterstützt. Das Verhalten erstaunt mich momentan schon etwas. Hab auch noch eine Meldung bei Synology aufgemacht. Die Doku zu Docker hat mir bis jetzt auch keine weiteren Erkenntnisse gebracht. Es sollte doch wirklich machbar sein einen Container den man in der GUI zum Starten bringt auch von der Shell aus zum Laufen zu bringen ... eigenartig.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Kann es daran liegen, dass Dein Image auch eine FHEM "Installation" auf dem lokalen Pfad braucht, welcher dann in /opt/fhem eingeblendet wird?
Ich würde die Daten dann eher über die versteckte Netzwerkfreigabe \\DSM-IP\docker unter Windows mit Notepad++ bearbeiten...


Code:
docker run -ti --rm -p 5901:5901 -p 6901:6901  consol/ubuntu-xfce-vnc
Auf die noVNC Web-Anwendunbg kann man dann mittels http://dsm-ip:6901/vnc_auto.html?password=vncpassword zugreifen.

Funkioniert wenigestens das bei dir?
 
Zuletzt bearbeitet:

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Ich bin gerade dabei deinen Vorschlag auszutesten, lade noch runter ....

Kann es daran liegen, dass Dein Image auch eine FHEM "Installation" auf dem lokalen Pfad braucht, welcher dann in /opt/fhem eingeblendet wird?

Momentan hab eich für meine Testereien mit Docker die FHEM-Dateien auf einem Syno-Share liegen welches dann mit "v /fhem/fhemtest:/opt/fhem" an /opt/fhem angebunden wird. Allerdings wird FHEM beim Start des Containers noch nicht gestartet. Das mache ich im ersten Schritt mit einem kleinen Shell-Script wenn der Container gestartet ist. Also insofern sollte sich Docker daran nicht stören, lediglich der Syno-Share ist anzubinden und das klappt ja über die Docker-GUI problemlos.

Das mit Notepad++ hab ich mir auch schon überlegt. Brauche dann allerdings noch eine praktikable Lösung um die Dateien ohne große Umwege in das SVN einzuchecken. Das hatte ich in der Virtualbox unter Jessie/KDE alles aus einem Guss eingerichtet, bin da momentan schon ein bisschen verwöhnt ;)
Aber wenn es immer wieder an etwas scheitert muss ich mir etwas überlegen ....
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Ich bin gerade dabei deinen Vorschlag auszutesten, lade noch runter ....



Momentan hab eich für meine Testereien mit Docker die FHEM-Dateien auf einem Syno-Share liegen welches dann mit "v /fhem/fhemtest:/opt/fhem" an /opt/fhem angebunden wird. Allerdings wird FHEM beim Start des Containers noch nicht gestartet. Das mache ich im ersten Schritt mit einem kleinen Shell-Script wenn der Container gestartet ist. Also insofern sollte sich Docker daran nicht stören, lediglich der Syno-Share ist anzubinden und das klappt ja über die Docker-GUI problemlos.
Ach deswegen startest Du bash ;)

Das mit Notepad++ hab ich mir auch schon überlegt. Brauche dann allerdings noch eine praktikable Lösung um die Dateien ohne große Umwege in das SVN einzuchecken. Das hatte ich in der Virtualbox unter Jessie/KDE alles aus einem Guss eingerichtet, bin da momentan schon ein bisschen verwöhnt ;)
Aber wenn es immer wieder an etwas scheitert muss ich mir etwas überlegen ....

Wie wäre es mit TortoiseSVN oder dem Notepad++ subversion-Plugin (das ebenfalls TortoiseSVN braucht)?
Ich könnte mir vorstellen das man vorher den Pfad als Laufwerk mappen muss.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Jetzt habe ich den Container über die Shell am Laufen. Bevor ich aber zum eigentlichen Thema "Multicast" testen kann muss erstmal einiges an Perl-Modulen nachinstallieren.

Wie wäre es mit TortoiseSVN oder dem Notepad++ subversion-Plugin (das ebenfalls TortoiseSVN braucht)?
Ich könnte mir vorstellen das man vorher den Pfad als Laufwerk mappen muss.

Ja. wäre eine Lösung. Unte reiner VM ist es halt so schön seine Arbeit einfach mal auf dem virtuellen Schreibtisch liegen zu lassen. Beim nächsten Anmelden liegt alles schon bereit wo man aufgehört hat. Einen Laptop schaltest du aus, startest alles erst wieder (zum Beispiel Wikis oder Dokus die man braucht) usw. usf. Und ob das Image ein paar hundert MB größer ist ... was soll's, wir haben ja schließlich eine NAS ;)

Ich fummele mich in Docker erst rein. Trauere jetzt schon meiner Virtualbox nach ;)
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Funkioniert wenigestens das bei dir?

Ja, das funktioniert. Hab das consol/ubuntu-xfce-vnc auch gleich noch mit -v /volume1/docker/fhem/config:/opt/fhem probiert, klappt auch. Also irgendwas stimmt dann mit meinem abgeleiteten Image nicht.

Bin erstmal mit deinem Vorschlag beschäftigt ob wir dem Multicast näher kommen. Damit steigt bzw. fällt das ganze Docker-Vorhaben.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Ja, das funktioniert. Hab das consol/ubuntu-xfce-vnc auch gleich noch mit -v /volume1/docker/fhem/config:/opt/fhem probiert, klappt auch. Also irgendwas stimmt dann mit meinem abgeleiteten Image nicht.

Das ist doch schon mal ein gutes Zeichen.

Bin erstmal mit deinem Vorschlag beschäftigt ob wir dem Multicast näher kommen. Damit steigt bzw. fällt das ganze Docker-Vorhaben.

Die Parameter '-d' und '--rm' können nicht gemeinsam verwendet werden.
Damit ist der Lösungansatz über '--net=host' unter DSM5.2 nicht wirklich nutzbar.

Unter DSM5.2 bleibt also nur noch der Weg über 'pipework'.
Unter DSM6 kannst Du wie gesagt problemlos '--net=host' über die Lebensdauer eines Containers verwenden.


Ich steuere meine Geräte mit FHEM, welches seine Nachrichten über einen HMLAN Konfigurator (HM-CFG-LAN) an meine Homematic-Geräte zum Regeln oder Auslesen sendet.
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Ich steuere meine Geräte mit FHEM, welches seine Nachrichten über einen HMLAN Konfigurator (HM-CFG-LAN) an meine Homematic-Geräte zum Regeln oder Auslesen sendet.

Das mache ich genauso. Habe noch die Syno Surveillance Station ins FHEM integriert (SSCAM) und noch zwei CULs. D.h. USB-Devices muß ich auch noch an den Docker bringen.
Zum Loggen verwende ich DbLOg mit der MYSQL auf der Syno usw.
Ich glaube für heute mache ich Schluß.

Erstmal vielen Dank ! Ich denke wir machen noch etwas weiter wenn ich einen Stand habe .

Schönen Abend noch ...
Heiko
 

DS_Starter

Benutzer
Mitglied seit
15. Jan 2012
Beiträge
271
Punkte für Reaktionen
0
Punkte
16
Jetzt habe ich mal pipework installiert und ausprobiert. Es könnte wahrscheinlich sehr einfach sein wenn Syno's busybox alle Standard grep-Optionen unterstützen würde, d.h. das Pipework-Script läuft auf Synology nicht.
Ich brauche eine andere Lösung.

Möglicherweise ist docker als Virtualisierungslösung einfach noch zu unausgereift oder gibt es mit dem docker auf DSM 6 schon die Möglichkeit jedem Container eine eigene IP-Adresse zuzuweisen, über die man dann im Netzwerk (ohne Portfreigaben und Mapping) den Gasthost und die Anwendungen erreichen kann ?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Hmm, das ist natürlich mist.

Docker ist ja nicht wirklich eine Virtualisierungsösung, da Ressourcen und Kernel vom Docker-Host verwendet werden und keine weitere "Übersetzung" von Kernel-Calls in die VM-Technolgie stattfinden, wie es bei Virtual Box oder vmWare ESXi/Workstation der Fall ist.

Ab DSM6 wird auch nicht mehr busybox verwendet und man hat die gnutils mitsamt bash, grep, cut, tr, sed, awk und wget als eigenständige executables.
Das mit der IP-Adresse kann ich die Tage gerne ausprobieren.. gerade keine Zeit zum basteln.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Beim Starten des Containers über die UI:
- Checkbox "Container mit hoher Priorität ausführen" anhaken
- Schaltfläche "Erweiterte Einstellungen" anklicken und im Reiter "Netzwerk" die Checkbox "Dasselbe Netzwerk wie Docker Host verwenden" anhaken
- Volumes und Variablen nach Bedarf konfigurien, Ports können nicht mehr konfiguriert werden, da der Container bereits mit einer lokalen IP läuft

Innerhalb des Containers kann dann eine beliebige IP aus dem eigenen Netzwerksegment verwendet werden. Ohne Aktivierung von "Container mit hoher Priorität ausführen" kann das Interface NUR mit der NAS-IP betrieben werden und ein wechsel führt zu Fehlermeldungen.

Hilft dir das weiter?

<update>Gilt natürlich nur für DSM6. Damit wäre Deine Frage, ob jedem Container eine eigene IP zugwiesen werden kann mit "Ja" beantwortet.</update>
 
Zuletzt bearbeitet:
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