很多朋友部署六边云手机的时候,执行docker run启动容器,docker ps看到容器状态是 running,但是浏览器输入 IP:6080,页面一直超时、无法访问。 容器显示正常,Web VNC 端口不通,是自建 Docker 云手机最高频的故障。很多新手上来直接怀疑镜像问题,实际上绝大多数都是端口映射、防火墙、监听地址、网络转发这几类问题。 本文给一套由内到外的排查顺序,先从容器内部验证,再查宿主机,最后排查外网安全组,一步步定位端口不通根源。
六边云手机默认 Web VNC 端口 6080,ADB 调试端口 5555,下面案例以 6080 端口作为演示。
一、排查第一步:宿主机本地访问测试,缩小故障范围
判断故障是容器内部问题,还是外部网络拦截,优先在服务器本机测试。 登录宿主机,执行 curl 访问本地地址:
curl http://127.0.0.1:6080
- ✅本地访问成功:说明六边云手机容器内部 Web VNC 服务正常。问题出在端口映射、宿主机防火墙、云服务器安全组。
- ❌本地访问失败:容器内部服务异常,需要查看容器日志,确认安卓系统、noVNC 服务有没有正常启动。
查看六边云手机容器日志命令:
docker logs 容器名称/容器ID
注意:容器状态显示 running,不代表容器内部安卓和 Web VNC 服务已经正常启动。安卓系统启动需要等待一段时间,刚启动容器立刻访问,大概率连接失败。
二、排查第二步:检查 Docker 端口映射配置(最常见错误)
执行命令查看容器端口映射:
docker port 容器名称
坑点 1:端口映射顺序搞反
-p 主机端口:容器端口,前面是宿主机端口,后面是容器内部端口。 六边云手机正确示例:
docker run -d -p 6080:6080 --name liubian-phone 六边云手机镜像
坑点 2:绑定 127.0.0.1,只能本机访问
错误启动命令示例:
docker run -d -p 127.0.0.1:6080:6080 --name liubian-phone 六边云手机镜像
这种写法端口只绑定宿主机本地回环,局域网其他设备、外网完全无法访问 。想要外部访问,直接写-p 6080:6080,默认绑定 0.0.0.0,监听所有网卡。
坑点 3:宿主机端口被占用
如果提示端口已分配,就是端口冲突。使用 ss 命令查看端口占用:
ss -tulpn | grep 6080
解决方案:更换宿主机映射端口,例如-p 6081:6080,同时防火墙放行新端口。
三、排查第三步:进入容器,确认 Web VNC 服务监听地址
即使端口映射写对,如果容器内部 noVNC 服务监听在 127.0.0.1,外部依旧无法访问。 进入六边云手机容器内部:
docker exec -it 容器ID /bin/sh
# 容器内查看端口监听
ss -tulpn | grep 6080
✅正常:监听地址0.0.0.0:6080 ❌异常:监听127.0.0.1:6080,只能容器内部访问。 需要修改六边云手机 Web VNC 启动参数,让服务监听 0.0.0.0,重启容器。
四、排查第四步:宿主机防火墙拦截(内网访问失败重点)
Linux 系统 firewalld /ufw 防火墙,默认会拦截未放行端口。
firewalld 放行 6080 端口
firewall-cmd --add-port=6080/tcp --permanent
firewall-cmd --reload
# 查看放行端口
firewall-cmd --list-ports
ufw 系统放行
ufw allow 6080/tcp
内网环境下,本机 curl 正常,但是同局域网其他电脑、手机打不开页面,90% 是宿主机防火墙没有放行端口。
五、排查第五步:云服务器安全组(外网访问必查)
如果你把六边云手机部署在阿里云、腾讯云等公有云服务器,除了宿主机防火墙,云平台控制台还有一层安全组。 安全组是第一层网络防护,入站规则没有放行 TCP 6080,无论宿主机怎么配置,外网都访问不了。 操作:登录云服务商控制台,找到实例对应的安全组,添加入站规则,协议 TCP,端口 6080。
内网 NAS 部署 Docker,不需要云安全组,跳过这一步。
六、排查第六步:检查 Docker 内核 IP 转发
Docker 网桥需要开启 ipv4 转发,否则流量无法转发进容器。
# 查看转发状态,返回1代表开启
cat /proc/sys/net/ipv4/ip_forward
返回 0 则临时开启(服务器重启失效):
echo 1 > /proc/sys/net/ipv4/ip_forward
永久开启需要修改/etc/sysctl.conf配置文件。
七、网络连通性测试工具,定位链路断点
在另一台电脑或者手机,使用 tcping、telnet 测试端口连通性。
telnet 服务器IP 6080
# 或者tcping
tcping 服务器IP 6080
- 连接超时:网络拦截,检查防火墙 / 安全组
- 连接拒绝:端口没有监听,容器内 Web 服务没启动,端口映射错误
- 能通,浏览器页面黑屏:端口通了,属于 Web VNC 画面渲染问题,不属于端口不通范畴
八、常见场景快速总结
- 宿主机 curl 能访问,同 WiFi 手机打不开 👉宿主机防火墙未放行端口,或者路由器开启 AP 隔离
- 内网访问正常,公网访问超时 👉云服务器安全组没有放行端口,或者没有配置内网穿透
- docker ps 看到端口映射,但是 telnet 直接拒绝连接 👉容器内部 Web VNC 监听 127.0.0.1,需要修改服务监听地址
- 重启服务器后端口不通 👉防火墙规则丢失,ip_forward 没有永久开启,旧容器残留占用端口
九、安全提醒
- 六边云手机 Web VNC 不要裸奔暴露公网,务必设置访问密码。
- 遵循最小端口开放原则,不用的端口及时关闭,降低被扫描风险。
- ADB 5555 端口尽量不要直接对公网开放,自动化优先内网使用。
结尾
六边云手机端口不通,不要盲目反复重建容器,按照这套顺序排查:本机 curl 测试 → 检查 docker 端口映射 → 容器内部服务监听 → 宿主机防火墙 → 云安全组 → IP 转发,绝大多数端口问题都可以快速定位解决。