我正在尝试创建一个基于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服务器上运行?
这是我到目前为止所拥有的。
Docker文件
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"]
Run Code Online (Sandbox Code Playgroud)
start.sh
#!/bin/bash
service avahi-daemon restart
service avahi-daemon status
avahi-browse -a
Run Code Online (Sandbox Code Playgroud)
nsswitch.conf
hosts: files mdns_minimal [NOTFOUND=return] dns
avahi-daemon.conf
...
enable-dbus=no
...
Run Code Online (Sandbox Code Playgroud)
跑步
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
Run Code Online (Sandbox Code Playgroud)
如您所见,avahi-daemon正在运行,但avahi-browse认为不是。这是因为我禁用了dbus吗?
enable-dbus=yes在Mac上的17.04 virtualbox映像中运行相同的命令(除了我保留的命令),一切正常。
小智 0
我目前正在尝试让 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/
希望这对您的情况有所帮助。
| 归档时间: |
|
| 查看次数: |
6153 次 |
| 最近记录: |