Я пытаюсь создать контейнер докеров на основе ubuntu 17.04, который может просматривать mDNS в моей сети (за пределами сети докеров) И размещать рекламу на mDNS в моей сети (за пределами сети докеров).
Я хочу иметь возможность запускать этот контейнер докеров на хосте macOS (во время моей разработки) И хосте Linux (Debian) для производства.
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?
Выполнение тех же команд (за исключением того, что я сохраняю enable-dbus=yes
) внутри образа виртуального бокса 17.04 на моем Mac, все работает нормально.
Обновление: похоже, вы можете не использовать мостовую сеть на хосте macOS. Итак, то, что я пытаюсь сделать, невозможно?
--net=host
недостаточно? При этом контейнер имеет доступ к интерфейсу хоста. - person Robert   schedule 20.05.2017