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.

  • Can't access the dockerized app launched from the command line from outside
  • Share localhost with docker container
  • Can't use yum inside Docker container running on CentOS
  • Deploying a network of containers in a single K8s pod
  • AWS EC2 Docker Volumes lsblk
  • Docker set read timeout for push
  • 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.

    /etc/systemd/system/docker.service.d/docker.conf

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -b=wlan1 --ip=10.0.0.151 -H fd://
    

    docker-compose.yml

    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.

  • All node modules in package.json are being re-downloaded after small change
  • Update docker-contanier jre timezone
  • Increment command timeout in EBS from the Dockerrun.aws.json -AWS
  • Openshift oc new-app command getsockopt: connection refused error
  • Access webcam using OpenCV (Python) in Docker?
  • What's main difference between Docker and Kubernetes
  • Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.