O Docker cria uma regra de iptables MASQUERADE para cada contêiner que possui uma porta exposta (neste exemplo, eu tenho 5 contêineres com a porta exposta 3500):
sudo iptables -t nat -L -v -n
<snip>
Chain POSTROUTING (policy ACCEPT 42 packets, 2650 bytes)
pkts bytes target prot opt in out source destination
<snip>
0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:3500
0 0 MASQUERADE tcp -- * * 172.17.0.3 172.17.0.3 tcp dpt:3500
0 0 MASQUERADE tcp -- * * 172.17.0.4 172.17.0.4 tcp dpt:3500
0 0 MASQUERADE tcp -- * * 172.17.0.5 172.17.0.5 tcp dpt:3500
0 0 MASQUERADE tcp -- * * 172.17.0.7 172.17.0.7 tcp dpt:3500
<snip>
Se eu entendi as coisas corretamente, isso significa que quando temos um pacote com origem e destino igual e destinado ao contêiner docker, o destino MASQUERADE deve ser aplicado. Mas quando isso aconteceria?