Ich versuche, einen Ubuntu 17.04 basierten Docker-Container zu erstellen, der mDNS in meinem Netzwerk (außerhalb des Andock-Netzwerks) durchsuchen UND auf mDNS zu meinem Netzwerk (außerhalb des Andock-Netzwerks) werben kann.Wie kann ich mDNS innerhalb von docker container anzeigen und durchsuchen?
Ich möchte diesen Docker-Container auf einem MacOS-Host (während meiner Entwicklung) UND einem Linux (Debian) Host für die Produktion ausführen können.
https://github.com/ianblenke/docker-avahi scheint dies für Linux-Hosts gelöst zu haben (unter Verwendung von Avahi-Daemon und Zuordnung des/var/run/dbus-Volumes zum Host). Wenn ich auf meinem Macbook entwickle, möchte ich mDNSResponder verwenden.
Wie erstelle ich einen Container, der in meinem lokalen Netzwerk werben und durchsuchen kann, der auch auf meinem MacOS-Laptop und auf einem Linux-Server ausgeführt wird?
Hier ist was ich bisher habe.
Dockerfile
FROM ubuntu:17.04
WORKDIR /app
RUN apt-get update && apt-get install -yq avahi-daemon avahi-utils libnss-mdns \
&& apt-get -qq -y autoclean \
&& apt-get -qq -y autoremove \
&& apt-get -qq -y clean
RUN update-rc.d avahi-daemon enable
COPY docker/etc/nsswitch.conf /etc/nsswitch.conf
COPY docker/etc/avahi-daemon.conf /etc/avahi/avahi-daemon.conf
COPY docker/start.sh /app
CMD ["/bin/bash","start.sh"]
start.sh
#!/bin/bash
service avahi-daemon restart
service avahi-daemon status
avahi-browse -a
nsswitch.conf
hosts: files mdns_minimal [NOTFOUND=return] dns
avahi-daemon.conf
...
enable-dbus=no
...
docker run --net=host -it mdns1
* Restarting Avahi mDNS/DNS-SD Daemon avahi-daemon [ OK ]
Avahi mDNS/DNS-SD Daemon is running
Failed to create client object: Daemon not running
Lauf Wie Sie avahi-Daemon ausgeführt wird sehen können, aber avahi-browse
glaubt nicht, es ist. Ist das, weil ich dbus deaktiviert habe?
Ausführen der gleichen Befehle (außer ich enable-dbus=yes
halten) in einem 17.04 virtualbox Bild auf meinem Mac Dinge funktionieren gut.
Update: es sieht aus wie Sie können not do bridged networking on a macOS Host. Ist das, was ich versuche, unmöglich zu machen?
Ist die Option '--net = host' nicht ausreichend? Damit hat der Container Zugriff auf die Host-Schnittstelle. – Robert
Nein.Linux (os ich laufe im Container) benötigt einen Avahi-Daemon, für den AFAIK dbus benötigt. https://github.com/ianblenke/docker-avahi ist ein Docker-Image, das funktioniert, wenn Ihr Host Linux ist. Nicht, wenn Ihr Host macOS ist (da dbus nicht verwendet wird). Oder ist das eine falsche Behauptung? – rynop