WSL相关问题记录

WSL的mirrored模式下docker部分容器启动失败(Already use)

  1. 检查是否指定容器IP
    因为如果指定了容器IP而该IP已被使用的话,将会报错。
  2. 检查端口占用
    wsl中使用命令:netstat -ap | grep {port}来查看端口占用情况
    win中使用命令:netstat -ano | findStr {port}
    如果存在端口占用,酌情关闭占用程序或是使用别的端口
  3. 检查win的系统保留端口
    Win将会保留一部分端口作为系统预留,如果需要的端口未被占用但是依旧提示Already use,则考虑是被系统保留了。
    使用命令:netsh interface ipv4 show excludedportrange protocol=tcp查看被保留的端口,检查自己需要使用的端口是否在范围内(带*的被排除,无需关注)。
    如果需要使用的端口被保留,可以考虑:
    • 使用别的端口
    • 调整win的动态端口范围(动态的端口范围中的端口才可能会被选择为保留端口)
      使用命令netsh interface ipv4 show dynamicportrange tcp查看动态端口范围
      使用命令netsh interface ipv4 set dynamicportrange protocol=tcp startport=10000 numberofports=20000修改动态端口的起始和个数
      重启生效
    • 添加排除保留端口
      使用命令netsh int ip add excludedportrange protocol=tcp startport=3121 numberofports=1修改排除保留端口的起始和个数

WSL的mirrored模式下无法访问网络

  1. ping 127.0.0.1是否可以访问回环
    如果不能访问可能是防火墙的问题?现在不太清楚。
    解决方案 :在.wslconfig文件中添加(为什么这样做可以也不清楚):
[experimental]
firewall=true
  1. ping 宿主机是否可以访问
    如果宿主机无法访问可能是不在一个子网中?
  2. ping baidu.com无法访问
    可能是路由问题
    使用route查看路由表,default一般是默认路由,flag为UG的指向网关,一般是这条路由的问题。ping这条路由的Gateway,如果不通则需要替换:
    1. 在win中使用命令tracert baidu.com来追踪路由,分析win使用的网关ip
    2. 在wsl中ping网关ip,应该是可以通的
    3. 使用命令route del default gw {route命令中显示的default的gateway}删除默认路由
    4. 使用命令route add default gw {win中分析得到的网关ip}添加路由

你可能感兴趣的:(Linux,ubuntu,windows,docker,网络)