Uma possível modificação nas regras do iptables é remover ambas e substituir por:
iptables -t nat -A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 8080
Isso garantirá que, no meu caso, somente o tráfego TCP na porta 80 pela interface eth0
será redirecionado. O tráfego proveniente de um contêiner docker no host não será redirecionado. Note que eu deixei de fora o redirecionamento localhost também, embora presumivelmente isso possa ser modificado para evitar a filtragem de qualquer coisa originada da interface docker0
.
Outra solução é empregar um proxy reverso para encaminhar solicitações HTTP de entrada na porta TCP 80 para a porta 8080 do host. Eu usei o Caddy com o seguinte Caddyfile simples:
localhost:80
proxy / localhost:8080
Com isso, posso remover completamente as regras do iptables.
Isso parece fornecer um redirecionamento simples na porta 80, bem como permitir que os contêineres do Docker usem o HTTP de saída normalmente.