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

  • 将端口公开给公众

  • 设置iptables,这样如果有东西通过Docker网桥(NAT)连接到容器,那么nginx仍然会知道正确的源IP

  • !完全打开防火墙到该端口

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

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