同一局域网下,如何用手机浏览器访问电脑 Docker 容器中的 Web 服务?
在本地开发、测试或折腾私有服务时,我们经常会在电脑的 Docker 中运行各种 Web 应用(例如 Web 管理面板、API 接口、基于 noVNC 的可视化桌面等)。
很多时候,我们希望直接用身边的手机浏览器来调试或查看这些页面。本文将详细讲解访问逻辑、操作步骤以及如何避开防火墙和代理(VPN)的常见坑。
目录
- 一、核心工作原理与端口映射
- 二、第一步:获取电脑的局域网 IP
- 三、第二步:放行电脑防火墙端口
- 四、第三步:手机浏览器访问与验证
- 五、避坑指南:开启代理(梯子/VPN)导致打不开怎么办?
- 六、常见问题排查(FAQ)
- 七、总结
一、核心工作原理与端口映射
手机访问电脑 Docker 的核心在于 端口映射(Port Mapping):
- 容器与宿主机: 容器有独立的内部网络。启动容器时,通过
-p宿主机端口:容器端口 把服务暴露给电脑。 - 监听范围: Docker 默认会将端口绑定在
0.0.0.0,这意味着局域网内的其他设备也可以通过电脑的局域网 IP 访问该端口。
端口作用示例:
如果容器映射了以下 3 个端口:
5900:5900:原生 VNC 远程桌面端口6080:6080:基于网页的 noVNC 远程桌面端口6657:6657:项目的主网页服务 / API 端口
则访问规则为:
- 电脑本机访问:
http://localhost:6657/ - 手机局域网访问:
http://<电脑局域网IP>:6657/(例如http://192.168.1.100:6657/) - 手机看图形桌面:
http://<电脑局域网IP>:6080/
二、第一步:获取电脑的局域网 IP
Windows 系统
- 按键盘快捷键
Win + R,输入cmd并回车。 - 在命令行中输入:
ipconfig - 找到你当前联网的网卡(如“无线局域网适配器 WLAN”或“以太网”),记录下 IPv4 地址(通常形如
192.168.1.X或192.168.31.X)。
macOS / Linux 系统
打开终端执行:
|
|
找到对应的内网 IP(如 192.168.x.x)。
三、第二步:放行电脑防火墙端口
Windows 防火墙默认会拦截来自局域网外部设备的访问请求。如果不放行对应端口,手机访问时会一直提示“连接超时”。
推荐方法:PowerShell 单行命令放行
以管理员身份打开 PowerShell,复制并执行以下命令(以放行 6657 和 6080 端口为例):
|
|
⚠️ 注意: 命令请整行复制执行,不要拆分成多行,避免因断行引发
-Direction: The term '-Direction' is not recognized报错。
检查网络配置类型(Windows):
确保当前 Wi-Fi 网络配置为 “专用网络(Private Network)”。如果是“公用网络”,Windows 防火墙会启用极其严格的入站拦截策略。
四、第三步:手机浏览器访问与验证
- 连接同一 Wi-Fi: 确保手机连接的无线网络和电脑处于同一个路由器下(避免连接访客 Wi-Fi)。
- 打开手机浏览器: 在地址栏输入电脑的 IP 和端口:
http://192.168.1.100:6657/(请将192.168.1.100替换为你电脑的实际 IP) - 如果项目包含网页版图形桌面(noVNC),可访问:
http://192.168.1.100:6080/
五、避坑指南:开启代理(梯子/VPN)导致打不开怎么办?
很多开发者在日常使用中会开启代理软件(如 Clash、v2rayN、Shadowrocket 等),此时极易遇到以下网络问题:
1. 访问时是填代理 IP 吗?
不是!依然填电脑的局域网 IP(192.168.x.x)。
代理节点是公网上的远端服务器,远端服务器无法识别也无法直接路由到你家里的局域网设备。
2. 手机开启代理后网页打不开
如果手机开启了“全局代理”或 VPN 虚拟网卡(TUN 模式),手机会将 192.168.x.x 的请求错误地转发给境外代理服务器,从而导致“连接超时”或“找不到服务器”。
- 解决方案: 在手机上临时关闭代理后再刷新网页;或者在手机代理软件中开启 “绕过局域网 (Bypass LAN)” / 切换至 “规则分流模式 (Rule)”。
3. 电脑开启了 TUN / 全局路由模式
若电脑代理软件开启了深度的 TUN 虚拟网卡接管,可能会屏蔽局域网入站连接。如果手机连接不上,可尝试临时关闭电脑端的 TUN 模式排查。
六、常见问题排查(FAQ)
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 手机提示“连接超时 / 无法访问” | 1. 电脑防火墙拦截 2. 手机开了全局代理 3. 手机与电脑不在同一 Wi-Fi |
1. 以管理员身份执行第二步的防火墙命令。 2. 关闭手机代理。 3. 确认手机和电脑连接的是同一路由器的非访客网络。 |
| 电脑本机能打开,局域网都打不开 | Docker 端口仅绑定了本地回环 | 检查启动参数,避免配置为 -p 127.0.0.1:6657:6657,应使用默认的 -p 6657:6657(绑定至 0.0.0.0)。 |
| 不在家(在外使用 4G/5G 流量)想要访问 | 超出局域网范围 | 需配合内网穿透(如 FRP、Cloudflare Tunnel)或组网虚拟局域网工具(如 Tailscale、ZeroTier)。 |
七、总结
实现局域网移动端访问的核心步骤非常简单:
- 确认容器启动参数包含
-p(端口映射)。 - 查 IP: 电脑执行
ipconfig获取局域网 IPv4。 - 开防火墙: 使用
New-NetFirewallRule单行命令放行端口。 - 连 Wi-Fi 访问: 手机连入同 Wi-Fi,关代理后输入
http://192.168.x.x:端口/即可。