2017-05-19 28 views
3

내 네트워크 (도커 네트워크 외부)에서 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

nsswitch.conf를,

당신이를 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를 얻으려고

+0

'--net = host' 옵션으로 충분하지 않습니까? 컨테이너가 호스트 인터페이스에 액세스 할 수 있습니다. – Robert

+0

아니요.Linux (컨테이너에서 실행 중입니까)에는 avahi-daemon이 필요합니다. AFAIK에는 dbus가 필요합니다. https://github.com/ianblenke/docker-avahi는 호스트가 Linux 인 경우 작동하는 고정 이미지입니다. 호스트가 macOS 인 경우 (dbus를 사용하지 않기 때문에) 그렇지 않습니다. 아니면 잘못된 주장입니까? – rynop

답변

0

이 건너 온 : 그것은 그것을 사용하지 않습니다를 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