実行される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への参照が削除されるようにファイルを編集または入力する必要があります。