Docker force container to specific physical interface
I’ve been searching around the internet for the past week or so to find a solution to this, but so far I have come up empty handed.
There are three network interfaces available to my host, and I need to execute a phantomjs script on the wlan1 interface.
My idea was to utilize Docker, but am running into issues locking a container to a specific interface.
Here’s what I’ve tried, all either redirects to another interface, or has no network access. The only method that allows explicit access to the interface I need is by turning off all other interfaces.
[Service] ExecStart= ExecStart=/usr/bin/docker daemon -b=wlan1 --ip=10.0.0.151 -H fd://
version: "2" networks: open_network_1: driver: bridge driver_opts: com.docker.network.host_binding_ipv4: "10.0.0.151" services: open_wifi_phantomjs: image: https://github.com/ollihoo/phantomjs-docker-rpi networks: - open_network_1 ports: - 10.0.0.151:80:80 - 10.0.0.151:443:443
I’ve also fiddled with ip routing, and iptables
ip route del 172.19.0.0/16 ip route add 172.19.0.0/16 dev wlan1 proto kernel scope link src 172.19.0.1 iptables -t nat -A POSTROUTING -s 172.19.0.0/16 -j SNAT --to-source 10.0.0.151
172.19 would be the subnet created by the docker-compose network, 10.0.0.151 would be the ip assigned to the wlan1 interface.
Any insight would be appreciated, and I’m sure will help those with similar goals.