无法从非本地服务器使用端口 3000 访问 Grafana(Docker 图像)

Cannot access Grafana (Docker image) using port 3000 from non-local server

我正在使用 Docker 在 Ubuntu 服务器上工作,其中我使用以下命令 运行 Grafana Docker 图像(基于文档:https://grafana.com/docs/grafana/latest/installation/docker):

docker volume create grafana-storage
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana-oss

我可以使用 localhost:3000 成功访问我的 Grafana 实例,但问题是我无法从任何外部服务器访问 x.x.x.x:3000。除非我使用 localhost.

,否则甚至不能在本地使用

尽管如此,我可以从外部服务器从外部设备访问x.x.x.x(端口80,正在被另一个进程使用)。

我继续检查端口配置详细信息:

netstat -an | grep "3000"

tcp        0      0 yy.yy.yy.yy:53596        yy.yy.yy.yy:3000        ESTABLISHED
tcp        0      0 yy.yy.yy.yy:53716        yy.yy.yy.yy:3000        ESTABLISHED
tcp        0      0 yy.yy.yy.yy:53700        yy.yy.yy.yy:3000        ESTABLISHED
tcp6       0      0 :::3000                 :::*                    LISTEN     
tcp6       0      0 ::1:3000                ::1:50602               ESTABLISHED
tcp6       0      0 ::1:50706               ::1:3000                ESTABLISHED
tcp6       0      0 ::1:3000                ::1:50706               ESTABLISHED
tcp6       0      0 ::1:50602               ::1:3000                ESTABLISHED

iptables -S | grep "3000"

-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3000 -j ACCEPT
-A DOCKER -d yy.yy.yy.yy/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3000 -j ACCEPT

iptables -L INPUT -nvx

Chain INPUT (policy ACCEPT 659 packets, 98721 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
     136     8160 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3000
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3000

并注意到防火墙处于非活动状态,然后我启用它并设置规则: sudo ufw enable sudo ufw allow 3000/tcp comment 'grafana-port' sudo ufw reload sudo ufw status numbered

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 3000/tcp                   ALLOW IN    Anywhere                   # grafana-port
[ 2] 3000/tcp (v6)              ALLOW IN    Anywhere (v6)              # grafana-port

应用此更改并没有使 x.x.x.x:3000 起作用。但是,正如我所说,80 端口仍然正常工作。也许我错过了其他东西。

更多信息:我尝试在 grafana.inidefaults.inicustom.ini 文件中使用 domain = x.x.x.xserve_from_subpath = true。没用。

您对解决这个问题有什么建议或贡献吗?提前致谢!

您尝试过以下方法吗?

docker run -p x.x.x.x:3000:3000 ...

问题已解决,让防火墙处于非活动状态,并连接到位于 tplinkwifi.net 的服务器路由器。我把这个路由器配置放在 advanced > NAT forwarding > Port forwarding:

Device IP Address: 192.168.x.x
External Port: 3000
Internal Port: 3000
Protocol: TCP

然后重新启动 docker 容器并从 non-local 服务器获得访问权限。 谢谢你的建议。