wsl2镜像网络模式下docker容器服务无法通过局域网ip访问
- 启用镜像网络模式
- 自动通过主机防火墙规则
- 确保主机允许局域网访问
WSL2镜像网络模式下Docker容器服务无法通过局域网IP访问,通常是因容器未绑定到 0.0.0.0 或Windows防火墙拦截引起。解决此问题的核心在于:在 .wslconfig 启用镜像网络与固定IP,并确保Docker服务监听所有网卡。以下是分步解决方案:1. 配置 WSL2 镜像网络 (.wslconfig)在您的Windows用户主目录(通常是 C:\Users\用户名\)下创建或编辑 .wslconfig 文件,添加以下内容以确保网络镜像生效,并允许局域网访问:ini[wsl2]
启用镜像网络模式
networkingMode=mirrored
自动通过主机防火墙规则
firewall=true
确保主机允许局域网访问
dnsTunneling=true
请谨慎使用此类代码。2. 配置 Docker 绑定 (daemon.json)由于镜像模式下网络可能存在不一致,需要在 WSL2 的 Ubuntu 中配置 Docker,使其监听所有接口,而非仅监听本地:在 WSL2 中编辑或创建 /etc/docker/daemon.json:bashsudo vi /etc/docker/daemon.json
请谨慎使用此类代码。添加以下内容:json{
“hosts”: [“tcp://0.0.0.0:2375”, “unix:///var/run/docker.sock”]
}
请谨慎使用此类代码。注意:若您本地已有其他配置,请合并。重启 Docker 服务:bashsudo service docker restart
请谨慎使用此类代码。3. 配置 Windows 防火墙 (最关键步骤)即使镜像模式开启,Windows防火墙仍可能拦截WSL的外部访问。以管理员身份运行 PowerShell。执行以下命令允许所有入站端口(或针对性添加端口):powershellNew-NetFirewallRule -DisplayName “WSL2 Docker Inbound” -Direction Inbound -Action Allow -Protocol TCP
请谨慎使用此类代码。4. 检查容器启动参数确保容器绑定到 0.0.0.0,而不是 127.0.0.1。不推荐: docker run -p 127.0.0.1:8080:80 (只能被本机访问)推荐: docker run -p 8080:80 (绑定到 0.0.0.0,允许外部访问)配置完成后,使用 Windows 的局域网IP(如 192.168.x.x:端口)即可从其他设备访问。