
실행되는 Docker 컨테이너(HTTP 요청에 단일 포트 3689를 사용하여 mDNS를 통해 게시된 DAAP 서버)를 만들고 forked-daapd
해당 포트를 호스트 OS에 올바르게 노출합니다.
sudo docker run -it --rm -v /home/naftuli/Music:/srv/music -p 3689:3689 \
daapd /sbin/my_init
문제는 서비스의 IP 주소(일부 내부 Docker IP 범위)가 실제로 작동하지 않기 때문에 서비스가 mDNS에 제대로 게시되지 않는다는 것입니다. 를 사용하여 실행할 수 있지만 --net=host
기본적으로 네트워크 어댑터를 컨테이너에 넘겨주기 때문에 이는 매우 위험할 수 있습니다.
이 서비스를 게시하고 예정대로 도면 작업을 수행할 수 있는 방법이 있습니까?
답변1
mDNS 서비스 도킹 관련 문제(예:넘쳐등)은 서비스가 이를 광고하기 위해 공용 IP 주소를 알아야 한다는 것입니다. 내가 아는 한, 이 문제를 해결하는 유일한 방법은 컨테이너에 공용 IP를 할당하는 것입니다(이는 약간 까다롭습니다.고정 IP 할당 지원 부족도커에서).
Docker 서비스는 으로 시작해야 합니다 . 브리지가 이미 구성되어 있다고
DOCKER_OPTS="--bridge=br0 --ip-masq=false --iptables=false"
가정합니다 .br0
컨테이너는 다음으로 끝나야 합니다.
--cap-add=NET_ADMIN --net=bridge
다음 예와 같이 컨테이너 내
pre-up ip addr flush dev eth0
에서/etc/network/interfaces
Docker가 할당한 IP 주소를 취소하는 데 사용할 수 있습니다.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
pre-up ip addr flush dev eth0
address 192.168.0.249
netmask 255.255.255.0
gateway 192.168.0.1
- 컨테이너의 항목 스크립트는 로 끝나야 합니다
/etc/init.d/networking start
. 또한 항목 스크립트는/etc/hosts
Docker 할당 IP에 대한 참조가 제거되도록 파일을 편집하거나 채워야 합니다.