Decidi executar alguns contêineres docker na minha rede doméstica usando uma interface de ponte personalizada (definida pelo usuário). Eu dei à ponte um IP estático na mesma rede que meu host do docker. A eth0 do host do docker tem: 192.168.10.20/24 enquanto a bridge0 do docker está configurada para 192.168.10.21/24. Eu não preciso ter containers docker conversando com outros containers docker. Quero que cada contêiner execute um serviço em seu próprio endereço IP, acessível a qualquer host na minha rede 192.168.10.0/24. Qual é a maneira mais simples de fazer isso? Usando CentOS 7.6.1810, docker 18.09.0, construa 4d60db4.
Além disso, as crianças legais usam /etc/docker/daemon.json ou /etc/sysconfig/docker para controlar as configurações? Não tenho certeza se usar o systemd é a melhor opção para o docker.
Você não quer uma ponte definida com a mesma sub-rede que sua ethernet de host. O Linux não saberá para qual rede enviar pacotes, pois ambos têm a mesma entrada de roteamento. Se você realmente precisa de endereços IP separados para contêineres (esta é uma configuração muito não tradicional), então você quer macvlan ou ipvlan.
Observe que o uso da rede do host exporá todas as interfaces do host ao contêiner, o que muitos consideram um risco de segurança. Os contêineres executados com essa configuração têm o mesmo acesso à rede que um processo executado fora de um contêiner.
Não houve necessidade de modificar a pilha de rede do docker padrão. Tudo o que eu precisava era especificar a rede do host ( --net=host ) para disponibilizar o ouvinte para minha LAN. docker run -d --net=host --name { container_name } { options }