2017-05-19 70 views
3

我试图创建一个基于Ubuntu 17.04的码头容器,可以浏览我的网络(码头网络外)上的mDNS,并在我的网络(码头网络外部)的mDNS上做广告。如何在Docker容器中做广告并浏览mDNS?

我希望能够在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守护程序正在运行,但avahi-browse不认为它是。这是因为我禁用了dbus吗?

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

更新:它看起来像你可以not do bridged networking on a macOS主机。那么我正在努力做什么不可能?

+0

是不是'--net = host'选项不够?通过该容器可以访问主机接口。 – Robert

+0

没有。Linux(我在容器中运行的操作系统)需要avahi-daemon,其中AFAIK需要dbus。 https://github.com/ianblenke/docker-avahi是一个码头工人的图像,如果你的主机是linux的话。如果您的主机是macOS(因为它不使用dbus),请不要使用它。或者这是一个不正确的断言? – rynop

回答

0

我目前正试图获得的avahi泊坞窗容器内,并在我的研究工作遇到了这个:

你可以在设置的avahi配置禁用dbus的,所以它不会 使用它。然后,当您在Docker中运行Avahi时,您必须通过 --no-rlimits标志,并且它不会影响您的容器安全性。

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

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

+0

是的,我试过这个,选项是'enable-dbus = no'。仍然不起作用。我在macOS主机上。我不明白他为什么说你必须使用'--no-rlimits'。你知道吗?似乎会导致问题。 – rynop

相关问题