AWS中的Docker – 多弹性networking接口

我有一个docker集装箱运行Web服务器端口80上听(jenkins / jenkins:lts)

我在主机上有两个接口, 一个是专用于容器(一旦这个工作,它将被locking,只允许HTTP / HTTPS

以下是实例上的NICconfiguration(这是AWS,因此它们是弹性networking接口):

  • 网关:10.10.20.1
  • eth0 ip 10.10.20.200
  • eth1 ip 10.10.20.111

路由configuration,因为这是不对称的路由:

  • ip route添加默认通过10.10.20.1 dev eth0选项卡1
  • ip route添加默认通过10.10.20.1 dev eth1选项卡2
  • IP规则从10.10.20.111/32选项卡添加2优先级500
  • IP规则添加从10.10.20.200/32选项卡1优先级600

上述路线规则设定后,以下是一些输出:

root@docker01:/home/ubuntu#ip route show tab 1 default via 10.10.20.1 dev eth0 root@docker01:/home/ubuntu# ip route show tab 2 default via 10.10.20.1 dev eth1 root@docker01:/home/ubuntu# ip rule 0: from all lookup local 500: from 10.10.20.111 lookup 2 600: from 10.10.20.200 lookup 1 32766: from all lookup main 32767: from all lookup default 

Docker容器正在侦听0.0.0.0:80

在尝试访问时,结果如下:

  • http://10.10.20.200 – 作品(加载Jenkins界面)
  • http://10.10.20.111 – 不起作用
  • 平10.10.20.200 – 作品
  • 平10.10.20.111 – 作品
  • ssh 10.10.20.200 – 作品
  • ssh 10.10.20.111 – 作品

由于ping和ssh工作,我有一种感觉,这与docker具体有关。

以下是端口的“docker ps”输出:

 0.0.0.0:443->443/tcp, 0.0.0.0:50000->50000/tcp, 0.0.0.0:80->8080/tcp 

我已经检查过的东西:

  • 防火墙/安全组 – ENI允许端口80和ICMP,一切都允许不受限制的出站。 除了docker自动创build的规则之外,没有任何Iptables规则
  • 运行一个明确的侦听IP的容器(例如:-p 10.10.20.111:80:80)没有什么区别,但是它明显地阻止了通过其他地址访问它的能力。
  • netstat显示全局端口80打开和侦听