如何更好地控制docker在iptables中打开哪些端口?

如何更好地控制docker在iptables中打开哪些端口?

我正在使用 UFW 来设置防火墙规则。

但是docker一直在iptables中覆盖它们,打开所有从容器映射到主机的端口。

我只想从外部访问 Docker 容器中的两个端口,但阻止访问其他 Docker 容器端口,并且只允许本地主机访问它们(在 ssh 隧道之后)。

除了 iptables=false 之外还有其他解决方案吗?

答案1

简单的答案是跳过任何 iptables 更改,并将您需要从本地主机访问的端口发布到仅环回接口。例如

docker run -p 127.0.0.1:2222:22 -d your_ssh_image

这只会将端口 2222 发布到 127.0.0.1 接口,而不是所有接口(0.0.0.0)。


如果你确实需要以影响 docker 容器的方式修改 iptables 规则,请使用该DOCKER-USER表,如下由 docker 记录,例如:

iptables -I DOCKER-USER -p tcp -m tcp --dport 2222 ! -s 192.168.1.1 -j DROP

相关内容