Avahi in Docker auf Wago PLC

mde

Level-2
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche, einen avahi-Dienst in einem Docker-Container auf einer Wago SPS zum laufen zu bringen, aber es sieht so aus, als ob der Dienst keine Netzwerkkommunikation erhält.

Der Docker-Service ist auf dem Controller vorinstalliert, ich hoffe also, dass er korrekt läuft.

Ich habe den avahi ydkn/avahi aus dem Docker Hub gezogen. Ich habe den avahi Container mit dem Befehl "docker run -d --restart always --net=host -v $(pwd)/services:/etc/avahi/services ydkn/avahi:latest" gestartet.

Wenn ich es richtig verstanden habe, bedeutet der Befehl -net=host, dass der Container alle Netzwerkschnittstellen des Hosts nutzen kann.

Ich habe einen Ordner avahi/services unter /etc angelegt, in dem ich meine Dienstdefinitionsdatei habe.

Ich habe die Dienstdefinitionsdatei auf einem anderen Gerät getestet, auf dem avahi vorinstalliert ist (ohne Docker), so dass ich weiß, dass die Datei korrekt ist.

Mit den Docker-Befehlen ls und top kann ich sehen, dass der Container läuft.

Es sieht also so aus, als ob avahi zwar läuft, aber die Netzwerkschnittstelle nicht nutzen kann oder nicht richtig konfiguriert ist. Ich habe ein paar Dinge über die Datei avahi-daemon.conf gelesen, aber ich kann diese Datei auf der SPS in Docker nicht finden.

Habe ich etwas missverstanden oder muss ich etwas anders konfigurieren?
 
Hallo,

augenscheinlich hast du einfach den Befehl aus Github kopiert.

-v $(pwd)/services:/etc/avahi/services: Hier wird ein Verzeichnis vom Host in den Container gemountet.
  • $(pwd)/services: Dies ist der Pfad auf deiner Host-Maschine. $(pwd) ist ein Shell-Befehl, der das aktuelle Arbeitsverzeichnis (current working directory) zurückgibt, und /services ist ein Unterverzeichnis darin.
  • /etc/avahi/services: Dies ist der Pfad im Container, in den das Host-Verzeichnis gemountet wird.

Du hast also deinem Container gar keinen "existierenden" Pfad übergeben, wenn du den Befehl exakt so abgesetzt hast. Daher zieht der Container auch momentan keine Konfigurationsdatei ran.
Wie es am Ende mit selbst mit der Konfig aussieht kann ich nicht sagen, kenne den Service nicht (ich gehe aber davon aus das du hier niederschreibst was der Dienst für dich machen soll).
Sieht für mich nur so aus als würde bei dir momentan kein link zwischen Container und Host bestehen. Es sei denn es gibt auf deinem Host exakt dieses Verzeichnis.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ich habe den Befehl aus Github übernommen. Aber ich habe das Verzeichnis /etc/avahi/services angelegt und in diesem Ordner die Konfig Datei hinterlegt. Ich bin davon ausgegangen, dass der Befehl (pwd)/services:/etc/avahi/services, das Arbeitsverzeichnis von (pwd)/services nach /etc/avahi/services ändert. Oder macht der Befehl etwas anderes?
 
Nach meinem Verständnis macht der Befehl eine Art "geteilten Ordner" zwischen Container und Host (da die beiden Systeme wirklich komplett voneinander getrennt sind) , wie eine VM auf dem Windows PC (hier muss man auch alles händisch teilen, ansonsten wird es mit der Kommunikation zwischen Host und VM schwer).
Wenn also vor absetzen des Befehls, im Verzeichnis /services, kein Ordner, mit dem Namen (pwd) war, wird der Link ins leere laufen.
Zumal ich von allen Verzeichnissen, außer dem /home Verzeichnis, Abstand nehmen würde. Wer weiß wie die Firmware hier werkelt und möglicherweise nach Neustart Verzeichnisse zurücksetzt / löscht (die Firmware ist nämliche keine native Ubuntu / Debian Linux Version (Wago hat das alles auf den PFC abgestimmt). Das home Verzeichnis hingegen gehört ganz dir...
Daher könnte der Befehl wie folgt aussehen:

docker run -d --restart always --net=host -v /home/avahi/services:/etc/avahi/services ydkn/avahi:latest

Natürlich muss unter /home dann auch der Ordner avahi vorhanden sein. Ich weiß nämlich nicht ob der Befehl in der Lage ist Verzeichnisse zu erstellen (ich glaube nicht).
 
Ich habe jetzt einen Ordner avahi/services unter home angelegt, in dem Ordner ist die Config Datei. Ich habe aber jetzt die gleiche Ordnerstruktur avahi/services unter etc und home.

Ich habe deine run Befehl ausprobiert und es funktioniert jetzt.

Brauche ich den Ordner unter etc noch oder kann ich ihn löschen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach meinem Verständnis kann der unter /etc entfernt werden da du ihn ja eigenständig angelegt hast.
Die Funktion vom Service selbst findet ja im Container statt.
Falls es Probleme bereitet kann man ja zur Not den Controller nochmal auf Werkseinstellungen setzen und alles von vorne durchspielen.
Hört sich bei dir noch nach Inbetriebnahme an.
 
Ich werde es mal ausprobieren den Ordner zu löschen und testen wie es sich verhält.

Aber schon mal vielen Dank für die Hilfe.
 
Zurück
Oben