请教docker端口不受ufw限制怎样解决?

debian12系统安装了ufw
但是docker容器端口不需要ufw放行就能连通
按照claude教的,尝试修改了/etc/docker/daemon.json,添加"iptables": false,还安装了ufw-docker,都没有效果
想请教下有什么办法解决?只能通过ufw放行

6 Likes

network_mode:host了么?

3 Likes

没有呀,我只是按照claude教的弄了上面两个

1 Like

只找到这个, 试试?

1 Like

我没试过, 毕竟云机还有个安全组…

我docker暴露的是127.0.0.1:port

迈向全面容器化→UFW 管不了 Docker 的解决方案

2 Likes

GitHub:chaifeng/ufw-docker
按照这个大佬的方案改就行。对于有对外通信需求的容器,ufw添加route规则到指定容器或端口。

1 Like

确认ufw enable了吗?

嘿嘿 :stuck_out_tongue:

1 Like

我一般用iptables,如果是普通的服务,限制访问ip直接iptables -A INPUT就行。但如果是docker搭建的服务,可能会失效,必须加一条iptables -I DOCKER-USER才行

/etc/docker/daemon.json

~/.docker/config.json
应该有区别,不太了解你要用哪个

前一个用于docker pull
配置的127.0.01:端口

后者用于docker run
配置的是容器网关地址:端口,一般是172.17.0.1:端口

1 Like

哇,原来大佬也在这耍。

暴露端口前加127.0.0.1,其它不需要改任何东西

1 Like

我现在是在用127.0.0.1了

感谢,没了解过iptables,我现在docker搭建服务都用127.0.0.1,其他用ufw

这个问题我以前也遇到过,GPT就能解答。方法其实很简单,Ubuntu22如下

根本原因在于:docker会直接修改iptables,使ufw防火墙失效。gpt给的其他解决方式就比较复杂了……

23333万年老坑了

cat << EOF >> /etc/docker/daemon.json
{
     "iptables": false
}
EOF

echo "DOCKER_OPTS=\"--iptables=false\"" >>  /etc/default/docker
service docker restart