Eu tive o mesmo problema e o resolvi usando IPTABLES.
Exemplo para permitir somente 3306 do ip de origem xxx.xxx.xxx.xxx:
Adiciona uma aceitação para a fonte que corresponde ao nosso ip para a linha 1 da cadeia FORWARD
iptables -I FORWARD 1 -p tcp -i eth0 -s xxx.xxx.xxx.xxx --dport 3306 -j ACCEPT
Solta todas as outras conexões na cadeia FORWARD dessa porta
iptables -I FORWARD 2 -p tcp -i eth0 --dport 3306 -j DROP
O uso dos números de linha (1 e 2) força as regras a serem adicionadas acima das criadas pelo docker, como:
-A AVANÇAR -d 0.0.0.0/32! -i docker0 -o docker0 -p tcp -m tcp --dport 3306 -j ACCEPT