头脑一热,买了台 windows 笔记本

windows

最近换了台 windows 笔记本,无他,就是想闲的时候玩玩游戏,一个人的周末实在太无聊。而且现在用的 mba 配置太低了,卡的不行。在网上看了一些资料,感觉在 windows 下使用 wsl2 开发是可行的,于是就下单了,买的是联想 r9000p,16寸,贼大,以后每天都是负重训练了。。。

环境准备

新电脑默认安装了 win11,正好 wslg 也需要在比较新的版本上使用,我也就懒得换回 win10 了。为了在 windows 上完成开发,需要先安装 linux 子系统以及 docker。

在安装 wsl 之前,需要先在 windows 的程序中启动 linux 子系统和虚拟机平台支持的功能,然后根据提示重启电脑。

wsl2

这里是微软官方的 安装文档,执行 wsl --install 就会完成 wsl 的安装、设置 wsl2 为默认版本以及安装 ubuntu。

docker

新版本的 docker-desktop 已经提供了对 wsl 的支持,只需要在官网下载安装包,然后在设置中启用 wsl 的特性,那么就能在 linux 中使用 docker-desktop-for-windows。是不是还挺神奇的,我在用的时候真的吃了一惊,现在的 windows 和 linux 子系统融合的也太好了吧,甚至你在 windows 安装的 vscode,能够在 linux 中使用 code . 这样的方式来使用。

代理

使用 docker 来进行开发,有一个必须要解决的问题就是网络代理。如果是镜像源,那么可以配置一些国内的镜像就可以了,比如中科大源、清华源等等,我一直用的中科大源,感觉中科大的还是很好使的。

但是如果要在容器中编译程序呢?比如 go,在编译程序的时候会从外网下载一些第三方依赖,如果没有代理,是没有办法下载的。

docker 官方有给出相应的解决方案,在容器运行的时候,如果需要使用网络代理,那么需要新建或者修改 ~/.docker/config.json 文件,进行如下配置。

1
2
3
4
5
6
7
8
9
10
11
{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.example.com:8080",
"httpsProxy": "https://proxy.example.com:8080",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}

有一点要注意,上面的例子中代理用的是 http 协议,但是一般我们使用的代理软件使用 socks5 的比较多,因此在修改配置的时候别写错了。

代理的地址填写本机的地址就 OK,但是这里有一个细节,不能填写 127.0.0.1,应该使用 ipconfig 查一下本机的 ip 地址,然后使用正确的网卡对应的 ip 地址,同时代理软件也需要开启 允许局域网访问 这一项配置。

总结

到这里,就可以实现在容器中使用代理访问外网了,不得不说现在的 wsl 是真的牛逼啊,当初 wsl1 的时候用了一段时间,很多功能都没法用,感觉很鸡肋;而到了 wsl2 就完全不同了,使用起来香的一匹,启动速度贼快,甚至在文件管理器也能直接查看 linux 下的文件目录,再配合 vscode 上的 wsl 插件,只能说是真香。