내 네트워크 (도커 네트워크 외부)에서 mDNS를 검색하고 mDNS에서 내 네트워크 (도커 네트워크 외부)에 광고 할 수있는 우분투 17.04 기반 도커 컨테이너를 만들려고합니다.docker 컨테이너에서 mDNS를 광고 및 탐색하려면 어떻게해야합니까?
이 도커 컨테이너를 macOS 호스트 (개발 중)와 Linux (데비안) 호스트에서 실행할 수 있기를 원합니다.
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
hosts: files mdns_minimal [NOTFOUND=return] dns
당신이를 Avahi - 데몬이 실행 볼 수 있듯이
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.conf
...
enable-dbus=no
...
하지만 avahi-browse
는 생각하지 않습니다. 내가 dbus를 비활성화했기 때문에 이것입니까?
내 컴퓨터에서 17.04 버추얼 박스 이미지 안에 똑같은 명령을 실행합니다 (단, enable-dbus=yes
을 유지해야합니다).
업데이트 :not do bridged networking on a macOS 호스트처럼 보입니다. 나는 불가능한 일을하려고 노력하고 있는가? 내가 현재 고정 표시기 컨테이너 내부와 내 연구에서 근무를 Avahi를 얻으려고
'--net = host' 옵션으로 충분하지 않습니까? 컨테이너가 호스트 인터페이스에 액세스 할 수 있습니다. – Robert
아니요.Linux (컨테이너에서 실행 중입니까)에는 avahi-daemon이 필요합니다. AFAIK에는 dbus가 필요합니다. https://github.com/ianblenke/docker-avahi는 호스트가 Linux 인 경우 작동하는 고정 이미지입니다. 호스트가 macOS 인 경우 (dbus를 사용하지 않기 때문에) 그렇지 않습니다. 아니면 잘못된 주장입니까? – rynop