如何使用防火墙从主机外部阻止docker映射端口,而不会弄乱主机内部的docker路由?

如何使用防火墙从主机外部阻止docker映射端口,而不会弄乱主机内部的docker路由?

我有一个在主机上运行的 Docker 容器,其中某些端口映射到主机上的端口。

docker run -d -p 9009:9009 someserver

我希望这台机器通过防火墙与互联网隔离,除了 80、443 和 22。

但我仍然希望主机内部的进程能够连接到 9009。

当我发现 docker 似乎完全绕过了任何丢弃数据包的防火墙规则时,我感到有点震惊。

我在 centos 7 上尝试过防火墙iptables阻止除 80、443 和 22 之外的所有端口。不知怎的,我仍然能够从主机外部访问 docker 端口映射容器(端口 9009)!我发现的一些解决方案似乎完全搞乱了 docker 的路由 - 要么让 docker 容器无法访问互联网,要么其他什么。

我的情况可能吗?

这似乎是在问同样的问题: https://security.stackexchange.com/questions/66136/docker-port-forwarding-exposure

答案1

看起来我只能将暴露的容器端口绑定到本地主机。

docker run -d -p 127.0.0.1:9009:9009 someserver

相关内容