You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu UFW未开放9010端口却能访问Docker中phpMyAdmin容器的原因咨询

Ubuntu UFW未开放9010端口却能访问Docker中phpMyAdmin容器的原因咨询

嗨,我来帮你把这个事儿理清楚~ 你遇到的这个情况其实是Docker和UFW的规则优先级及兼容性问题导致的,具体原因拆解如下:

  • Docker的iptables规则优先级更高:Docker安装完成后会自动接管系统的iptables配置,它添加的端口转发规则(在nat表中)优先级比UFW的规则(在filter表中)要高。哪怕你的UFW没开放9010端口,Docker已经提前把流量转发的规则加上了,外部请求自然能直接通过。

  • 端口映射触发了Docker的自动规则:你启动phpMyAdmin容器时肯定用了类似docker run -p 9010:80 ...这样的命令吧?这个-p参数会让Docker自动在主机的iptables里添加DNAT规则,把主机9010端口的流量转发到容器内部的80端口。这个操作绕开了UFW的管控,因为UFW的规则不会自动同步Docker的端口映射配置。

  • UFW和Docker的默认兼容性限制:UFW的规则主要作用于主机的常规网络流量,但Docker的网络栈是独立的,它会直接修改iptables的底层规则,导致UFW的允许列表有时候无法覆盖Docker的端口转发行为。如果想要让UFW真正管控Docker的端口,你可以修改Docker的配置文件/etc/docker/daemon.json,添加{"iptables": false},然后重启Docker服务,之后再手动用UFW开放需要的端口——不过这么做可能会影响Docker的其他网络功能,得谨慎操作。

你可以用下面的命令验证一下:

  • 执行sudo iptables -t nat -L -n,看看里面有没有针对9010端口的DNAT规则;
  • 执行sudo ufw status verbose,确认UFW确实没有开放9010端口的规则。

备注:内容来源于stack exchange,提问作者rd1218

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:43:17