Docker强制容器到特定的物理接口

时间:2017-04-03 22:06:42

标签: networking docker docker-compose

过去一周左右,我一直在互联网上寻找解决方案,但到目前为止,我已空手而归。

我的主机有三个网络接口,我需要在wlan1接口上执行一个phantomjs脚本。

我的想法是利用Docker,但遇到了将容器锁定到特定接口的问题。

这是我尝试过的,都重定向到另一个界面,或者没有网络访问权限。允许显式访问我需要的接口的唯一方法是关闭所有其他接口。

/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

我也摆弄了ip routing和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将是docker-compose网络创建的子网,10.0.0.151将是分配给wlan1接口的ip。

任何见解都会受到赞赏,我相信我会帮助那些有类似目标的人。

0 个答案:

没有答案