Dockerコンテナを含むmDNS

Dockerコンテナを含むmDNS

実行される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割り当てサポートが不足ドッカーから)。

この記事技術がどのように実行されるかを説明します。ダーバン:

  1. Dockerサービスはで始まる必要があります。ブリッジがすでに構成されているとDOCKER_OPTS="--bridge=br0 --ip-masq=false --iptables=false"します。br0

  2. コンテナは次に終了する必要があります。--cap-add=NET_ADMIN --net=bridge

  3. 次の例に示すように、コンテナ内pre-up ip addr flush dev eth0/etc/network/interfacesDockerによって割り当てられた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
  1. コンテナのエントリスクリプトはで終わる必要があります/etc/init.d/networking start。さらに、エントリスクリプトは、/etc/hostsDocker割り当てIPへの参照が削除されるようにファイルを編集または入力する必要があります。

おすすめ記事