WiFi Connect indeed needs host network mode as it operates on top of the physical WiFi interfaces. There is no way to run it outside of the host network.
You can still communicate with other containers running in bridge network mode though.
Let’s say you have an application called
app running next to wifi-connect. You would like it to be able to communicate with the other containers, but those are running in bridge network mode.
There are two use-cases:
app may have an open listening port that applications running in other containers want to connect to
app may need to initiate connection towards applications running in other containers that have listening ports open
For scenario 1.: Since
app is running in the host’s network namespace it needs to listen either on the
172.17.0.1 address (the br-xxxxxxxxxxxx interface) or on all addresses (
0.0.0.0). Then you can reach
app from the bridged containers through the
172.17.0.1 address, which happens to be their gateway.
For scenario 2.: The solution is to define ports in the docker-compose.yml file for the applications running in the bridge network containers and expose those ports to the host’s network namespace. This way
app will be able to connect to those ports, since they are available both in the bridged namespace and the host’s namespace.
In both cases you may again consider using iptables to filter out access through
wlan0 to ports that you don’t want to be available from the external network/Internet. You may apply those from the container running in host network mode.