如何在不让Docker弄乱iptables的情况下将源IP转发到Docker容器

Mat*_*rga 7 firewall bridge iptables nat docker

如果你在Docker容器中运行某些东西(例如nginx)并将一个暴露的端口发布到外部世界(比如docker run -p 80:80 nginx),那么Doc​​ker将会

  • 将端口暴露给公众
  • 设置iptables,这样如果有东西通过Docker网桥(NAT)连接到容器,那么nginx仍然会知道正确的源IP
  • !完全打开防火墙到该端口

我不想让任何人连接到已发布的端口,但Docker将其搞砸了.所以我重新启动了Docker守护进程--iptables=false,允许我自己管理防火墙.但是,nginx现在只将桥(172.18.0.1)视为源地址.

如何控制防火墙并仍然将源IP地址转发到容器?