NEWS
IoBroker Docker Image mit MACVLAN möglich?
-
@oliverio Es geht nicht um etwas konkretes, sondern schon abstrakt.
Allgemein kann man also sagen:
Es können mehrer Clients auf einen Port zugreifen,
aber nur ein Server darauf lauschen? RINTIG?Weil die Clients den Port immer wieder schließen, oder wie?
Am Beispiel MQTT wäre es also so:
Man könnte im ioBroker mehrere MQTT Clients haben, die auf externe Broker schreiben (mit der selben Portnummer, aber anderen IP), weil es dann die Kombination ip:port wäre. RICHTIG?Es könnte aber im ioBoker nur eine Instanz des MQTT Adapters als Broker auf einem Port arbeiten. RICHTIG?
Kann an es so sagen?
Ja das passt so.
Der Punkt mit dem schließen passt nicht so ganz, da wenn ein Client mit einem Server Kontakt aufnimmt, dann wird die Kombination Client-ip-port/ Server-ip-port socket genannt. Das wird für jede Anfrage geöffnet und nach Abschluss wieder geschlossen.
Der Server horcht natürlich dann immer noch auf seinen Port, bis er das explizit schließt oder das Programm beendet wird.Da ich selbst kein mqtt einsetze, weiß ich nicht genau ob der Adapter selbst ein mqtt-Broker (also Server) darstellt oder einfach nur ein Client, der bei dem Eigentlichen mqtt Broker einfach alle Zustände abonniert hat, um diese dann als Iobroker datenpunkte abzubilden.
-
Ja das passt so.
Der Punkt mit dem schließen passt nicht so ganz, da wenn ein Client mit einem Server Kontakt aufnimmt, dann wird die Kombination Client-ip-port/ Server-ip-port socket genannt. Das wird für jede Anfrage geöffnet und nach Abschluss wieder geschlossen.
Der Server horcht natürlich dann immer noch auf seinen Port, bis er das explizit schließt oder das Programm beendet wird.Da ich selbst kein mqtt einsetze, weiß ich nicht genau ob der Adapter selbst ein mqtt-Broker (also Server) darstellt oder einfach nur ein Client, der bei dem Eigentlichen mqtt Broker einfach alle Zustände abonniert hat, um diese dann als Iobroker datenpunkte abzubilden.
-
@oliverio ok super.
Also könnte ich auch aus einem Container über eine Rest API gleichzeitig auf 192.168.2.10:8080 und 192.168.2.20:8080 zugreifen?
Wären je verschiedene ip-Port Kombinationen. -
@oliverio ok.
Dann macht das MACVLAN auch mit der separaten IP deswegen Sinn. Im bridged muss ich da eben ein Portmapping machen, da von außen ja immer die ip des Hosts verwendet wird.ja, aber das wäre auch für macvlan gut.
ich habe heute mal meine macvlan konfigurationen angeschaut.
wie, glaube ich, schon gesagt verwende ich nur docker-compose-konfigurationen
im portainer (dort heißt es stacks)
das hat den vorteil, das alles einheitlich dokumentiert ist und ich das sichern kann.
die arbeit mit docker-container ist da auch wesentlich angenehmer, da man sich die ganzen parameter von docker nicht merken muss.auf jeden fall habe ich festgestellt, das das portmapping bei macvlan tatsächlich nicht beachtet wird, was ich schade finde, falls man mal doch einen port auf einen anderen mappen will.
-
ja, aber das wäre auch für macvlan gut.
ich habe heute mal meine macvlan konfigurationen angeschaut.
wie, glaube ich, schon gesagt verwende ich nur docker-compose-konfigurationen
im portainer (dort heißt es stacks)
das hat den vorteil, das alles einheitlich dokumentiert ist und ich das sichern kann.
die arbeit mit docker-container ist da auch wesentlich angenehmer, da man sich die ganzen parameter von docker nicht merken muss.auf jeden fall habe ich festgestellt, das das portmapping bei macvlan tatsächlich nicht beachtet wird, was ich schade finde, falls man mal doch einen port auf einen anderen mappen will.
@oliverio sagte in IoBroker Docker Image mit MACVLAN möglich?:
auf jeden fall habe ich festgestellt, das das portmapping bei macvlan tatsächlich nicht beachtet wird, was ich schade finde, falls man mal doch einen port auf einen anderen mappen will.
Ja, das ist echt blöd, dass die Parameter zum Portmapping bei Containern im MACVLAN klaglos von Docker gefressen werden, aber letztlich natürlich keine Wirkung haben.
-
Also ich würde hier einigen Dingen widersprechen.
Auch mit macvlan macht man portmappings. Allerdings gibt es keine Notwendigkeit Container Ports auf andere Ports umzubiegen, da der Container ja seine eigene ip Adresse erhält und es dadurch zu keinen portkollisionen kommen kann wie im Bridge Modus, wo man mehrere Container auf die Ports des Host Systems Mappen will.Macvlan bedeutet nix anderes als das eine virtuelle netzwerkkarte
Simuliert wird und der Container dann fast wie eine vm funktioniert.
Die einzige Einschränkung , die ich kenne ist, das der Container den host netzwerktechnisch nicht ohne weiteres erreichen kann.
Daher sollte man dem Container dann zusätzlich noch das Bridge Netz zuweisen. Aber eigentlich ist das nur in Ausnahmefällen notwendigIch selbst betreibe 2 Iobroker docker Container mit macvlan (prod und test). Der prodcontainer läuft dann zusammen mit einem Redis Container. Der Redis benötigt allerdings keine eigene ip aus dem lan.
Was ich nicht ausprobiert habe ist, ob alle Ports automatisch von außen erreichbar sind. Ich würde sagen, nein. Ein Service im Container der auf einem Port hört, wenn der nicht im docker Aufruf oder docker-compose definiert wurde wird nicht von außen durchgereicht.
Von innen heraus können allerdings alle Ports nach außen genutzt werden. -
@oliverio wie kriege ich es denn hin dass mein iobroker welches über Macvlan läuft auf broadcast anfragen von aussen reagiert? Hast du das lösen können?
Mit von aussen meine ich von ausserhalb des containers sprich aus meinem hauptnetz -
@oliverio normalerweise hatte ich das auch gedacht wenn ich aber einen ping auf die broadcast adresse auslöse kommt überall keine antwort. Im meinem macvlan ist die broadcast adresse diese hier 192.168.1.15
Kriegst du eine antwort wenn du in deinem container einen ping auf die macvlan broadcast adresse auslöst
-
@oliverio normalerweise hatte ich das auch gedacht wenn ich aber einen ping auf die broadcast adresse auslöse kommt überall keine antwort. Im meinem macvlan ist die broadcast adresse diese hier 192.168.1.15
Kriegst du eine antwort wenn du in deinem container einen ping auf die macvlan broadcast adresse auslöst
-
Ich muss nochmal nach Haken.
Ich habe ja soweit alles (ioBroker) soweit über den Host Mode am laufen.Was müsste man denn noch beachten, wenn man (ich habe es als Stack im Portainer erstellt) den networkmode weg lässt?
Dann würde docker ja ein Bridge Network erstellen.
Kann es dann zu Problemen kommen? Also Port mäßig? -
Ich muss nochmal nach Haken.
Ich habe ja soweit alles (ioBroker) soweit über den Host Mode am laufen.Was müsste man denn noch beachten, wenn man (ich habe es als Stack im Portainer erstellt) den networkmode weg lässt?
Dann würde docker ja ein Bridge Network erstellen.
Kann es dann zu Problemen kommen? Also Port mäßig?@ben1983 beim bridge network läuft der iobroker in einem eigenen netz. Die ports müssen aber auf den host weitergeleitet werden. Bei der bridge variante funktioniert allerdings multicast nicht was zb. Für sonos notwendig ist. Das war für mich der grund auf MACVLAN umzustellen