Great, thanks for the details.
Just to try to simplify things, I would try this without using a bridged network.
If you provisioned the client configuration using the console, it should contain multiple IP addresses in the configuration file. One of those will be the external IP address of the host. The python client should be able to connect to the broker using the IP address (the host's). Alternatively, if you happen to provision via the console with "localhost" the client should still be able to use the docker gateway which should be something like 172.17.0.1.
If you could try it without a bridge network, and then post the results (the log of the client), that would be great.
Thanks a lot,