如何在Docker容器中做广告并浏览mDNS?

我试图创build一个基于Ubuntu 17.04的docker容器,可以浏览我的networking(dockernetworking之外)的mDNS,并在我的networking(dockernetworking之外)的mDNS上做广告。

我希望能够在macOS主机(在我的开发过程中)和Linux(Debian)主机上运行这个docker容器进行生产。

https://github.com/ianblenke/docker-avahi似乎已经为Linux主机解决了这个问题(利用avahi守护进程并将/ var / run / dbus卷映射到主机)。 当我在我的MacBook上开发时,我想使用mDNSResponder。

如何创build一个可以在我的本地networking上做广告和浏览的容器,这个容器也可以在我的MacOS笔记本电脑和Linux服务器上运行?

这是我到目前为止。

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 

正如你所看到的,avahi-daemon正在运行,但avahi-browse并不认为它是。 这是因为我禁用了dbus吗?

运行相同的命令(除了我保持enable-dbus=yes )在我的Mac上的17.04 virtualbox图像内工作得很好。

更新:它看起来像你不能在macOS主机上进行桥接networking 。 那么,我正在努力做什么不可能?

我目前正试图让avahi在docker集装箱内工作,在我的研究中遇到了这个问题:

你可以在Avahi设置configuration中禁用dbus,这样就不会使用它了。 然后,当你在Docker中运行Avahi时,你必须传递–no-rlimits标志,它不会影响你的容器的安全性。

https://www.reddit.com/r/docker/comments/54ufz2/is_there_any_way_to_run_avahi_in_docker_without/

希望这可以帮助你的情况。