绑定Dokcer容器到主机指定网卡的方法

2020-06-17 06:05:00易采站长站整理

第一个 docker1 为执行 ifconfig -a 命令时,显示的网桥名,如果不使用 –opt 参数指定此名称,那你在使用 ifconfig -a 命令查看网络信息时,看到的是类似 br-110eb56a0b22 这样的名字。这显然不怎么好看/记;

第二个 docker1 为执行 docker network list 命令时,显示的网桥名。

有了自定义网络,我们就可以为容器指定一个固定 IP 地址了。


docker run --network=docker1 --ip=172.18.0.100 ......
docker run --network=docker1 --ip=172.18.0.101 ......

知道了容器的固定 IP 地址,那我们就可以如法炮制,把该容器绑定到指定主机网卡了:


iptables -t nat -I POSTROUTING -p all -s 172.18.0.100 -j SNAT --to-source 10.0.0.100
iptables -t nat -I POSTROUTING -p all -s 172.18.0.101 -j SNAT --to-source 10.0.0.101

需要注意的是,这里的 -s 选项后面跟的参数是 IP 地址,而不是网段了。

其他相关命令

查看 iptables 规则


iptables -t nat -L -n --line-number

删除 iptables 规则


iptables -t nat -D POSTROUTING 11

其中,最后的 11 是要删除的规则序号(num)。

删除 Docker 自定义网络


docker network rm docker1