我有一个docker主机,它具有一个物理networking接口(eth0)和多个使用IP别名(eth0:1,eth0:2,eth0:3)分配给它的IP地址。
我想运行几个docker集装箱,使他们每个人都使用自己的IP地址拨打互联网的电话。 当从集装箱连接到集装箱时,它们最好在相同的IP上也可达到。
如何设置docker和iptables使其工作? 然后用什么参数来运行每个容器?
eth0 – > 192.168.0.1
eth0:1 – > 192.168.0.2
eth0:2 – > 192.168.0.3
eth0:3 – > 192.168.0.4
docker运行 – 名称= web01 -p 192.168.0.1:80:80 ….
docker运行 – 名称= web02 -p 192.168.0.2:80:80 ….
docker运行 – 名称= web03 -p 192.168.0.3:80:80 ….
docker运行 – 名称= web04 -p 192.168.0.4:80:80 ….
他们将创buildDNAT规则:
链DOCKER(2引用)pkts字节目标protselect输出源目的地
0 0 DNAT tcp – !docker0 * 0.0.0.0/0 192.168.0.1 tcp dpt:80 – :172.17.0.1:80
pkts字节目标人选退出源目的地
0 0 DNAT tcp – !docker0 * 0.0.0.0/0 192.168.0.2 tcp dpt:80 – :172.17.0.2:80
…
交通产生的集装箱属于规则:
链POSTROUTING(策略ACCEPT 430M数据包,26G字节)pkts字节目标protselect输出目的地
0 0 MASQUERADE all – *!docker0 172.17.0.0/16 0.0.0.0/0
PS
在Linux中,我们可以使用很多没有别名的IP
ip aa 192.168.0.1/24 dev eth0
ip aa 192.168.0.2/24 dev eth0 ….