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 FreeBSD be run inside Docker?
  • Register an instance to an AWS ECS cluster
  • Docker Compose circular container linking
  • docker sonarqube checkdependency plugin
  • What is the special gitlab-ci-token user?
  • How to mount external volume for mongoDB using docker-compose and docker-machine
  • 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.

  • Kubernetes run on AWS
  • docker containers communication on dev machine
  • docker nginx load balancing not working with Azure
  • How to write variable in docker-compose, running multiple containers which uses the same image but their ports are different
  • Installing maven in a docker build overrides JAVA 8 with JAVA 7(!)
  • How to build a sidecar container for passing files from a machine outside of the Kubernetes cluster?
  • Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.