WSL2 今天史诗级更新

2023 年 9 月 19 日
 hez2010

今天 WSL2 更新了 2.0.0 版本,详细更新内容见: https://github.com/microsoft/WSL/releases/tag/2.0.0

总结一下主要是:

  1. 支持自动回收内存
  2. 支持自动释放 WSL2 虚拟硬盘空间
  3. 支持和 Windows 使用相同的网络(镜像网络)
  4. 支持 DNS Tunneling
  5. 支持 Windows 设置的代理
  6. 支持 Windows 防火墙
  7. 支持 Multicast

需要至少 Windows 11 23H2 ,目前还没有发布正式版本,不过可以考虑加入 Insider 的 Release Preview 或者 Beta 通道,更新系统之后运行 wsl --update --pre-release 升级 WSL ,然后就可以在 %userprofile%\.wslconfig 里面设置以下内容:

[experimental]
autoMemoryReclaim=gradual # 可以在 gradual 、dropcache 、disabled 之间选择
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后你会发现,WSL2 和 Windows 主机的网络互通而且 IP 地址相同了,还支持 IPv6 了,并且从外部(比如局域网)可以同时访问 WSL2 和 Windows 的网络。这波升级彻底带回以前 WSL1 那时候的无缝网络体验了,并且 Windows 防火墙也能过滤 WSL 里的包了,再也不需要什么桥接网卡、端口转发之类的操作了。

47372 次点击
所在节点    程序员
194 条回复
lllpla
2023 年 9 月 20 日
ShadowPower
2023 年 9 月 20 日
@yuyanglive 其实我在 2017 年的时候(当时 WSL1 刚修完各种大 bug )就已经尝试 WSL 下使用 Docker 了。
2018 年的时候在 V2EX 上发了个回复:
https://v2ex.ih06.com/t/446914?p=2#r_5623149

在那时候就可以做到非常完美的程度,例如:
可以在 WSL 下挂载 Windows 目录下的文件到 Volume 里。
当年我还在做 HyperFabric ,它的 Peer 节点在 Docker 内部跑,然后 Peer 会启动 Docker 容器跑 Chaincode 。这需要能连接到 Docker 容器外部的 Docker Daemon 才能实现。官网的实例不用做额外配置,直接用 WSL1 都可以。官方的 Linux 示例,一行代码都不改,直接跑通。( PS:之前用 Apple Silicon macOS 都跑不通……)
那时候还用来开发了 Kubernetes 容器编排微服务,用这种环境来做测试,也没问题。

至于 WSL2 Docker 的话,比上面提到的还要完善。
ShadowPower
2023 年 9 月 20 日
@yuyanglive 打错了,是 Hyperledger Fabirc
arfaWong
2023 年 9 月 20 日
@yuyanglive #140 我通过 docker desktop 安装的,wsl 下 docker 正常
JeromeCui
2023 年 9 月 20 日
试了一下,intellij idea 搭配 wsl 还是不好用,算了,继续用我的 Kubuntu
a33291
2023 年 9 月 20 日
win11 canary 版本升级到 2.0.0 后安装 Ubuntu 出现错误
wslregisterdistribution failed with error: 0x8004032d
yuyanglive
2023 年 9 月 20 日
@ShadowPower
我的是 win11 22h2 ,wsl --update --pre-release 升级的 wls, docker 也是直接安装的 wsl 版本
设置 autoMemoryReclaim=gradual 后,wsl 里的 docker 跑不起来了,跟 70 楼情况一样,这一行注释掉就行了
yuyanglive
2023 年 9 月 20 日
@arfaWong
我的是 win11 22h2 ,wsl --update --pre-release 升级的 wls, docker 也是直接安装的 wsl 版本
设置 autoMemoryReclaim=gradual 后,wsl 里的 docker 跑不起来了,跟 70 楼情况一样,这一行注释掉就行了
ding2dong
2023 年 9 月 20 日
挺好的,大半年没写代码了,等升级后试试,先去钓鱼了
ThisDay
2023 年 9 月 20 日
@hez2010 #114
@Jat001 #136
折腾半天无解,得等 idea 更新,idea 现在获取的宿主机 ip 永远是 127.0.0.42 ,然后在这上面监听,但是 wsl 里面访问不到。我又换回桥连了
ShadowPower
2023 年 9 月 20 日
@yuyanglive 这在微软的博客里提到了,微软正在和 docker 团队沟通这一问题。然后博客里建议使用 Docker Desktop 。

In early testing we noticed that this will break the docker daemon when running it as a service in WSL, and so if you’re using this feature we recommend you use Docker Desktop for your docker needs. We are working with the Docker team to address this in the future.

其实还有其他问题,在楼主发的第一条附言的链接里都有说明。
capric
2023 年 9 月 20 日
Windows 10 企业版 LTSC 21H2 (19044.3448)直接安装 github release 2.0.0 之后更新.wslconfig 后重启,再打开现有 linux
wsl: 不支持镜像网络模式,正在回退到 NAT 网络
wsl: Hyper-V 防火墙不受支持
wsl: DNS 隧道不受支持
vhwwls
2023 年 9 月 20 日
windows11 的 hyperv 是不是和 vmware 有冲突,我印象中以前在 windows10 下面 hyperv 和 vmware 可以共存的?
iawes
2023 年 9 月 20 日
Windows 以后会不会出一个 Linux 内核版
hez2010
2023 年 9 月 20 日
@iawes 感觉不太可能。
读了 windows internals 之后深感 linux 内核在 windows 内核前面如同玩具,就算要出 linux 内核版,现阶段 linux 缺少的东西也非常多。
default996
2023 年 9 月 20 日
@BurgerTown 试过了,提示没有安装权限……只能退出安装。
还是等正式版吧
wei2629
2023 年 9 月 20 日
nb 了 windows 是最好的 linux 发行版了。
well775397252
2023 年 9 月 21 日
@BurgerTown 我用 mirrored 端口不能访问。。。
nodejsexpress
2023 年 9 月 21 日
用惯了 ubuntu 桌面, 似乎对微软无感了.
主要平时没有微信干扰, 可以静静地开发.
游戏也没有接触, 用最多是 ZSH+IDE+浏览器
jokcylou
2023 年 9 月 21 日
我更新了为啥 networkMode 不生效呢,我已经在 dev channel 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/975098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX