我有一个在主机上运行的 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