通过本机ip地址访问wsl2容器中的服务
问题:想搭建一个本地的接口文档服务器,在局域网内使用,使用的是wsl2+docker,搭建完成后可以使用localhost:端口号访问,但是不能通过本机ip进行访问。
找了很多文档,修改防火墙规则,更改桥接模式,关闭虚拟机防火墙等等,都不行。 按官方文档说最新的wsl2是支持镜像模式的,wsl2和宿主机ip是一致的,可以直接进行访问,但是不行,后面试了很多方法,发现是因为使用1pan的时候将docker的iptables设置为true了。
解决方法
编辑/etc/docker/daemon.json文件添加如下内容
{ "iptables": false }
开放防火墙 管理员权限打开PowerShell运行
# 可以通过这个命令获取40E0AC32-46A5-438A-A0B2-2B479E8F2E90 Get-NetFirewallHyperVVMSetting | Format-Table Name, Id -AutoSize Set-NetFirewallHyperVVMSetting -Name ‘{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}’ -DefaultInboundAction Allow
3.编辑wslconfig开启镜像网络 wsl-config
win + r 输入 %UserProfile% 新建 .wslconfig 建议内容如下[wsl2] memory=8GB #内存最大值 swap=8GB #虚拟内存最大值 processors=4 #cpu核最大值 networkingMode=mirrored # 开启镜像网络 dnsTunneling=true # 开启 DNS Tunneling firewall=true # 开启 Windows 防火墙 autoProxy=true # 开启自动同步代理 [experimental] sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间 autoMemoryReclaim=gradual # 开启自动回收内存 hostAddressLoopback=true # 允许容器通过分配给主机的 IP 地址连接到主机
重启wsl就可通过宿主机ip进行访问。