O Docker cria sua própria ponte e, quando existe uma ponte existente, parece que as duas colidem. Eu experimentei isso pessoalmente e várias fontes na Internet mencionam esse problema. Uma solução que vi foi fazer o Docker usar a ponte existente, e esta diz que é porque as regras do Docker estão atrapalhando a ponte do KVM e fornece a solução abaixo.
Minha pergunta é: por que a configuração dessas duas pontes afeta uma à outra? Não se pode ter duas pontes completamente independentes em um computador com uma placa Ethernet? Ou seja, a configuração de uma ponte não afeta a rede da outra ponte.
$ sudo systemctl edit docker.service
[Service]
ExecStartPre=/bin/sh -c “/usr/sbin/iptables -D FORWARD -p all -i br0 -j ACCEPT || true”
ExecStartPre=/usr/bin/iptables -A FORWARD -p all -i br0 -j ACCEPT
$ sudo reboot
Você está misturando as coisas aqui. O Docker cria uma ponte que consiste apenas em todas as interfaces veth dos contêineres do docker em execução - a própria ponte não toca sua interface de rede física. A comunicação de seus contêineres docker para o mundo público é feita via roteamento, não via ponte!
Se você tentar adicionar sua interface de rede física a duas pontes independentes diferentes, isso seria um problema. Ter uma ponte docker e uma ponte diferente no mesmo PC não impõe um problema.
No entanto, você tem um problema diferente: o docker está mexendo com uma configuração do kernel, fazendo com que os pacotes que atravessam uma ponte (camada 2) sejam enviados para uma camada, para que esses pacotes sejam enviados através do filtro de pacotes, que os pacotes em ponte geralmente não Faz. Veja esta pergunta, ela tem uma excelente resposta que descreve o problema com o docker e as pontes ...