O problema de dockerização de serviços mDNS (por exemplo, Avahi etc.) é que o serviço deve estar ciente de seu endereço IP público para publicá-lo. Tanto quanto eu sei, a única maneira de resolver este problema é atribuir IP público ao contêiner (o que é um pouco complicado devido a falta de suporte para atribuição de IP estático no Docker).
Este artigo descreve como isso pode ser feito em Debian :
-
O serviço do Docker deve ser iniciado com
DOCKER_OPTS="--bridge=br0 --ip-masq=false --iptables=false"
. Presumo quebr0
bridge já esteja configurado. -
O contêiner deve ser iniciado com
--cap-add=NET_ADMIN --net=bridge
-
O contêiner interno
pre-up ip addr flush dev eth0
in/etc/network/interfaces
pode ser usado para descartar o endereço IP atribuído pelo Docker, como no exemplo a seguir:
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
- O script de entrada do contêiner deve começar com
/etc/init.d/networking start
. O script de entrada também precisa editar ou preencher o arquivo/etc/hosts
para remover referências ao IP atribuído pelo Docker.