Win11主机无法连接WSL2中Ruby容器的问题排查
WSL2 Docker容器端口无法从Win11主机访问的解决办法
1. 确认Docker端口映射配置
打开你的docker-compose.yml,检查端口映射是否正确绑定到所有网卡。正确配置示例:
services: ruby-app: ports: - "0.0.0.0:3000:3000" # 简化写法"3000:3000"默认绑定0.0.0.0,也可以用
如果之前未指定0.0.0.0,修改后重启容器重试。
2. 验证WSL2内端口监听状态
在WSL2终端执行以下命令,查看Docker是否在监听3000端口:
sudo netstat -tulpn | grep 3000
如果看不到docker-proxy进程监听0.0.0.0:3000或你的WSL2 IP(10.5.0.2)的3000端口,说明端口映射未生效,重启Docker服务:
sudo service docker restart
3. 修复WSL2网络缺失eth0的问题
WSL2无eth0通常是网络配置异常导致,按以下步骤重置:
- 在Win11的PowerShell中关闭所有WSL实例:
wsl --shutdown - 用管理员权限打开PowerShell,重置网络栈:
netsh interface ipv4 reset netsh winsock reset - 重新启动WSL2,执行
ip addr检查,正常情况下会出现eth0网卡。
4. 先在WSL2内部测试连通性
先跳过主机浏览器,在WSL2终端用curl测试容器端口:
curl http://localhost:3000
如果能得到正常响应,说明容器服务没问题,问题出在WSL2与Win11的网络转发;如果仍提示连接拒绝,需检查Puma实际监听地址——部分场景下日志显示监听0.0.0.0,但实际启动命令或配置文件绑定的是127.0.0.1,此时要修改Puma启动参数或配置,确保绑定0.0.0.0。
5. 检查Win11防火墙设置
确认Win11防火墙未拦截3000端口:可以添加入站规则允许3000端口,或临时关闭防火墙测试(测试后记得重新开启)。
内容的提问来源于stack exchange,提问作者Iridio
相关产品推荐
相关产品推荐

