WSL2环境下Docker部署的应用无法从Windows宿主机访问如何解决
排查与解决步骤
你遇到的是WSL2 NAT网络模式的常见端口转发异常问题,按以下顺序排查即可:
- 验证基础连通性
在WSL终端执行ip addr show eth0,找到inet对应的IPv4地址(格式一般为172.x.x.x),在Windows浏览器直接访问http://<WSL的IP>:3000:
- 如果能正常访问,说明是localhost转发规则异常,走步骤2
- 如果还是无法访问,走步骤3
- 修复WSL localhost转发
- 打开Windows用户目录(
C:\Users\<你的用户名>\),新建/编辑.wslconfig文件,添加以下配置:
[wsl2] localhostForwarding=true
- 保存文件后,以管理员权限打开PowerShell执行
wsl --shutdown重启WSL实例,再启动容器测试访问
- 排查端口绑定与防火墙问题
- 先确认Docker端口绑定规则,在WSL执行
docker ps,查看PORTS列是否显示0.0.0.0:3000->3000/tcp、0.0.0.0:3307->3306/tcp,如果仅显示:::3000->3000/tcp说明仅绑定了IPv6地址,需要修改docker-compose.yml的ports配置,强制绑定IPv4:
# app服务的ports配置 ports: - "0.0.0.0:3000:3000" # db服务的ports配置 ports: - "0.0.0.0:3307:3306"
修改后重新执行 docker-compose up -d 启动容器
- 临时关闭Windows防火墙测试,如果关闭后可以正常访问,就添加WSL网卡的入站放行规则,允许3000、3307端口的入站连接
- 排除第三方软件干扰
如果开启了VPN、系统代理类软件,先完全退出再测试,这类软件会劫持本地路由导致WSL端口转发失效
注意:你之前尝试用
docker inspect获取的容器IP是Docker内部子网地址,Windows宿主机默认没有对应路由,访问失败是正常情况,不需要尝试该方式访问
内容的提问来源于stack exchange,提问作者SANGEETH KUMAR S G
相关产品推荐
相关产品推荐

