Rem Blue

繁华三千异世界,只取一瓢真爱蓝。

0%

WSL2、Windows Terminal 完整配置以及docker desktop安装

前段时间微软总算把Linux系统“搬到”Windows上来了。WSL2与之前的版本相比,提高了文件系统性能并增加系统调用的完全兼容性。所以,给人的感觉就是WSL2更加的成熟一些。但是你在使用WSL2服务的时候,你还是无法使用虚拟机的。下面我将介绍如何将WSL2与Windows Terminal结合使用。

注意: WSL 2 仅适用于 Windows 10 版本18917或更高版本,如果你不清楚自己的版本号,那么你可以通过打开设置-系统-关于中的设备参数中查看,或者使用命令systeminfo | find "System Type"输出自己PC的版本号。

开启WSL下载内核

我们输入以下命令开启设备上的WSL

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

开启成功之后,我们需要重新启动计算机。

接下来,我们去下载最新的Linux内核软件包

x64下载地址

AMD64下载地址

切记要下载对应的指令集的更新包,关于二者的差别这里不展开讲,有兴趣的可以看看这个

下载完成之后,双击运行该文件。

安装Linux

完成上面的步骤之后,我们现在去Microsoftstore安装Linux发行版本,我这里选择的是Ubuntu18.04,个人可以随意选择,自己用着顺手就行。

image

下载完成之后,我们点击启动,创建用户和密码。

配置

我们输入wsl -l -v 查看当前的版本,如果你的WSL处于1的话,我建议切换至2。因为我个人在安装Linux发行版的时候,当我点击启动Ubuntu打算创建用户和密码的时候,上面显示“当前的网络名已经不再可用”。如果你在过程中也遇到了这样的问题,那么请这样操作。

wsl --set-version Ubuntu-18.04 2

你也可以使用命令默认使用WSL2

wsl --set-default-version 2

启动

启动Ubuntu的方式有两种,一是通过点击Ubuntu的图标使其运行,另一种就是使用wsl命令运行。因为接下来要与WindowsTerminal结合使用,所以我将会用wsl命令来启用Ubuntu。


Windows Terminal

注意:以下是关于WindowsTerminal的相关的一些配置,可以选择跳过,不影响WSL2和Linux发行版的使用,但是如果希望把Windows Terminal作为一个命令行工具,那么下面的配置你可以考虑一下。

WindowsTerminal是一款集成了Windows上的PowerShell、CMD以及Windows Linux子系统的终端。Windows自身的命令控制台过于简陋,所以我们不妨使用Windows Terminal来替代cmd和power shell,只需要简单的配置一些功能,就能实现很多常用的Linux操作命令。

vim配置

Vim是一款优秀的Linux文本编辑器。我们在Windows下编辑一些一些配置文件的时候很有作用。

1
2
3
4
5
6
1.首先,我建议先去下载一个Vim,安装的时候注意路径中不要包含中文路径。
2.然后,配置环境变量。找到Vim.exe的二进制文件位置,例如我的Vim安装位置
在C:\Program Files (x86)\Vim\vim82,
然后到设置——系统——关于——高级系统设置——环境变量——path——编辑——新建。
然后将Vim.exe的路径复制粘贴上去。(例如我的就是C:\Program Files (x86)\Vim\vim82)。
然后重新打开Windows Terminal终端就可以了。

Git Bash 配置

GitBash是一个Git命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。更多资料——https://zh.wikipedia.org/zh-cn/Git

其实,我自己在网上看到很多的将GitBash配置到WindowsTerminal下都是通过修改WindowsTerminal中的JSON文件来实现的。但是实际中,WindowsTerminal已经精简了很多的冗长的代码,添加配置文件也变得更加的简单。

1
2
3
4
5
1.首先,你需要去下载一个Git
2.打开WindowsTerminal终端,进入设置——添加配置文件。
填写名称,选择文件路径(找到自己git bash.exe的二进制文件路径)
例如我的git 的bash.exe在D:\BigDataTools\Git\Git\bin下。
你可以添加一个图标(当然也可以不要)。之后重启终端就可以了。

但是,完成相关的bash配置之后我们会发现,当我们使用命令浏览磁盘下具有中文的文件夹时会出现乱码现象。其实这个很好解决,我们只需要在Git文件路径下找到bash.bashrc文件,例如我的路径D:\BigDataTools\Git\Git\etc。

image

然后打开文件进行编辑,在文件后面添加

1
2
3
export LANG="zh_CN.UTF-8"

export LC_ALL="zh_CN.UTF-8"

之后,保存退出,重启终端,这个时候我们就会发现问题解决了。

关于Windows Terminal的配置部分算是额外添加补充的,但是没有这些配置也不影响我使用WSL2以及Linux发行版。

完成这些配置之后,接下来我们就可以使用命令在Windows Terminal中来启动Ubuntu了实现操作文件的效果了。

1
2
wsl 启用Ubuntu
exit 退出Ubuntu

WSL1和WSL2

WSL1和WSL2到底有哪些不一样呢?

WSL1的主要问题是

1
2
文件 I/O 慢,尤其是在大量IO操作时,例如使用 git 克隆仓库;
不支持内核程序;

WSL2改进方面

1
2
3
4
5
相比较于 WSL 1 使用翻译层将 linux 系统调用转化成 windows 系统调用,
WSL 2 使用了一个轻量级的、无需维护的虚拟机,并在这个虚拟机中运行了一个完整的 linux 内核。
WSL 2 使用一个 VHD 虚拟磁盘文件作为 linux 发行版的根目录,
其中使用 ext4文件系统格式,极大提升了IO性能。
WSL 1 不支持,WSL2 支持可以运行例如 Docker 等程序

还有许多的地方二者都有不一样的地方,以及什么情况下选择哪一种版本更加合适,内容太多我没有办法一一列举,我强烈建议阅读微软官方文档,上面对于二者的描述很详细,很清楚。

在WSL2下安装Docker

Docker Desktop for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V(若版本为 v1903 及以上则无需开启 Hyper-V),或者 64 位版本的 Windows 10 Home v1903 及以上版本。更多的详细情况可以参阅官方文档

在安装好WSL2,并且没有问题出现之后,开始着手安装docker。在Docker Desktop官方下载地址下载好.exe文件。

双击.exe文件进行安装,勾选为WSL2添加需要的配置文件和创建开始菜单(看到两个勾就可以了),点击下一步开始安装。等待一会儿就会安装完成,点击close。

这个时候如果你能够正常打开docker那么是最好的,如果出现了报错的话,例如

图片来源于网络

那么你就需要下载WSL2内核的更新包,前往上面给出的链接下载。

又或者是下面这个样子的。

image

这里需要需要注意三点:

1.我们首先要保证该启用的功能都启用了。

2.我们需要使用的是WSL2版本来操作docker,所以你要先确定自己当前的版本。

wsl -l -v 查看当前版本

wsl --set-default-version 2 将WSL2设置为默认版本

3.输入在cmd中输入 bash 或者 wsl 都报错, 提示参考的对象类型不支持尝试的操作。

输入 netsh winsock reset ,使用管理员权限运行该命令。然后重新启动docker。

启动docker之后,我们需要对docker在WSL2下进行一些设置:

image

image

默认的访问方式去访问官方仓库太慢了,我们需要配置一个镜像源。我们在docker engine registry-mirrors中配置镜像站点。

1
2
3
4
"https://hub-mirror.c.163.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com",
"http://f1361db2.m.daocloud.io"

这四个分别是网易源,阿里源,华为源,还有daocloud,可以根据自己的情况进行更换,只要保持相对应的格式就可以。

image

完成这些配置之后,我们现在进行检查。

1
2
3
4
5
6
检查wsl2下的安装docker是否成功
输入wsl(一定要保证是wsl2),接着输入 docker version
查看本地的镜像
docker image ls ,如果没有结果就去点击docker上面的image,然后等待一会儿。
检查镜像加速配置
docker info

关于更多docker操作命令,使用方法等,这里有一份docker从入门到精通的教程。

VM虚拟机还是WSL2

就安装配置来说,WSL2的安装可比新建虚拟机导入ISO镜像文件来的快多了。而且WSL2启动快,资源占用也少一些,共享文件和网络系统,节省了不少的折腾时间。所以是不是意味着我们可以和VM虚拟机说byebye了?

这可不见得,对于是使用WSL2还是VM虚拟机,还得看自己的需求。

1.如果你是一个萌新,那么建议使用虚拟机,对于命令不熟悉的你,最好不要直接在Windows上直接操作,万一出现什么问题解决起来可能要比你新建虚拟机长不少时间。在VM虚拟机就无所谓了,快照谁用谁真香,万一有什么错误还可以通过快照恢复。而且VM虚拟机有着更加友好的GUI界面,这对于新手来说也是很重要的一点,但是WSL2就显得比较简陋了。

2.VM虚拟机中的系统是一个较为完整的系统,能够很大程度上模拟真实的环境。而WSL2就只有一个轻量级的Linux内核而已,所以二者在功能性上丰富程度是相差较大,在这一点上VM虚拟机完胜WSL2。所以,如果你想体验一个较为完整的Linux系统,建议VM虚拟机。

目前,微软正在与VM进行合作,现在的VMWorkstation16允许Hyper-V与VM虚拟机同时使用了。相信以后估计不用再为两者的二选一问题而伤脑筋了。

参考文章

1.解决idea Terminal配置git bash中文乱码

2.Windows Subsystem for Linux Documentation

3.docker for windows_wsl

  • Post author: Aegisprogram
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.