我正在尝试创建一个基于ubuntu 17.04的docker容器,可以在我的网络上(在docker网络之外)浏览mDNS,并在mDNS上通告我的网络(在docker网络之外)。
我希望能够在macOS主机(在开发期间)和Linux(Debian)主机上运行此docker容器进行生产。
https://github.com/ianblenke/docker-avahi似乎已经为Linux主机解决了这个问题(使用avahi守护程序并将/ var / run / dbus卷映射到主机)。当我在我的macbook上开发时,我想使用mDNSResponder。
如何创建可在我的本地网络上发布和浏览的容器,该容器也可以在我的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吗?
在我的Mac上运行相同的命令(除了我保留enable-dbus=yes
)在17.04虚拟框图像中工作正常。
更新:您似乎可以not do bridged networking on a macOS托管。我试图做的事情是不可能的呢?
答案 0 :(得分:1)
我目前正试图让avahi在Docker容器内工作,在我的研究中发现了这个:
你可以在Avahi设置配置中禁用dbus,这样它就不会失败 用它。然后当你在Docker中运行Avahi时,你必须通过它 --no-rlimits标志,它可以在不影响容器安全的情况下工作。
https://www.reddit.com/r/docker/comments/54ufz2/is_there_any_way_to_run_avahi_in_docker_without/
希望这对您的情况有所帮助。
答案 1 :(得分:0)
对于mdns广告/收听,我们运行 dnssd 在docker容器中。
但是!为了在本地网络上可被发现 docker容器应具有来自网络的IP地址,应配置从网络到docker容器的正确路由。
如果您无法控制网络的默认路由器, 您可以尝试使用macvlan / ipvlan网络驱动程序。 它将允许您在同一网络接口上分配多个mac / IP地址。
在我们的例子中,网络是wifi,因此我们必须使用ipvlan,因为macvlan不适用于wifi。在有线情况下,您应该首选macvlan。