7

WSL 初体验

WSL Linux 子系统体验原生 Docker,真香!

Windows 的 linux 子系统出来挺长时间了,你体验过了吗?

今天就带你折腾一下吧,毕竟想甩掉超占用硬件资源的大块头VM,比如VMware

本文献给爱折腾的你,折腾吧,后浪!

简单说下这篇文章的重点:

  • 安装 WSL 的全过程
  • 选择性升级到 WSL 2 的全过程
  • WSL 2 中体验原生 Docker

啥是 WSL ?

WSL 是 Windows Subsystem for Linux 的缩写,意思是 linux 版的 window 子系统。

引用自:微软官网 https://docs.microsoft.com/zh...

The Windows Subsystem for Linux lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a virtual machine.

You can:

  • Choose your favorite GNU/Linux distributions from the Microsoft Store.
  • Run common command-line tools such as grep, sed, awk, or other ELF-64 binaries.
  • Run Bash shell scripts and GNU/Linux command-line applications including:

    • Tools: vim, emacs, tmux Languages: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, etc. Services: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
  • Install additional software using own GNU/Linux distribution package manager.
  • Invoke Windows applications using a Unix-like command-line shell.
  • Invoke GNU/Linux applications on Windows

简单的说就是,Linux 的 Windows 子系统让开发人员无需虚拟机就可以直接在 Windows 上运行 Linux 环境,包括大多数命令行工具、程序和应用。

使用 WSL 的好处是:

  1. 与在虚拟机下使用 Linux 相比,WSL 占用资源更少,更加流畅;
  2. WSL 可以对 Windows 文件系统下的文件直接进行读写,文件传输更方便;
  3. 剪贴板互通,可以直接在 Windows 下其它地方复制文本内容,粘贴到 WSL;

备注:其实我挺喜欢虚拟机的,毕竟是模拟了硬件,比较成熟,稳定。

开启WSL支持

使用管理员权限的 Shell 才能安装 WSL。

按 Win+X, 找到 Windows PowerShell (管理员),并复制执行命令。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

以上命令会激活 WSL 服务,然后需要重启系统

重启之后,Win + R,输入 appwiz.cpl,左上角找到“启动或关闭 Windows 功能”,会看到这个选项处于选中状态。

其实吧,上面的命令就相当于手动去勾选这个功能。

直接命令执行效率可能更高些。

image-20200606122027686

安装 WSL 发行版

在 Windows 应用商店搜索 ubuntu ,选择自己喜欢的版本,安装即可。

这里我选择的是 Ubuntu 20.04 LTS,之后的所有内容也是基于 WSL Ubuntu 编写。

image-20200606122740396

下载,安装之后,第一次打开会初始化一会

然后设置个用户名,密码

image-20200606125309524

到这里,其实咱们的 WSL 就安装好了。

接下来我们让它更好用吧!

apt 换源

Debian / Ubuntu 的官方源在国内访问很慢,咱们更换为清华大学 TUNA 的软件源镜像

PS:也可以用阿里云的镜像,我体验了没那么快(可能我姿势不对),就不推荐了。

  • 执行下面命令,备份 apt 安装源:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • vim 编辑 sources.list :
$ sudo vim /etc/apt/sources.list 
  • 将 sources.list 中的内容替换如下

注意:这里是Ubuntu 20.04 LTS的,

如果是其他版本的ubuntu,自行访问[ 清华大学开源软件镜像站]去查找对应版本的镜像配置

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

更新软件

  • 更新软件源中的所有软件列表,可以看到飞快的在刷屏,哗哗哗的
$ sudo apt-get update
  • 更新软件
$ sudo apt-get upgrade
# 更新内容稍多,差不多几分钟,玩会手机吧。。。

配置SSH服务器

咱们用惯了 类似 xshell ,SecureCRT 这种 SSH 工具连接 Linux,所以顺便把 SSH 功能打通吧,用的顺手,毕竟 PowerShell 用的不是太方便!

WSL 上的 SSH 服务器没有自动配置,需要手动重新安装,首先可以运行以下命令来检查

$ sudo service ssh stop
$ sudo /usr/sbin/sshd -d

image-20200607000536951

如果输出信息包括以上信息,即找不到 key,重新安装 openssh-server 就可以解决问题

$ sudo apt purge openssh-server
$ sudo apt install openssh-server

然后需要配置 /etc/ssh/sshd_config,用 sudo 权限运行 vim 修改如下三个关键字

记得删除 #

Port 22
# 这两行允许了 root 账户和密码登录
PermitRootLogin yes
PasswordAuthentication yes

image-20200607001214265

然后记得重启 ssh 服务

$ sudo service ssh restart
$ sudo service ssh status

如果需要用密码登录 root 账户,还需要设置密码

$ sudo passwd root

然后就可以使用 SSH 工具进行连接啦,本地直接 localhost 即可

image-20200607001637550


OK,到此,咱们的 WSL 已经配置完毕。

尽情体验,安装 Nginx,Redis,MySQL .... 折腾吧后浪!


这就完了???

对,差不多就完了。

以上内容就是 WSL 安装的全部内容。

客官要体验下 WSL2 吗?

去年Build大会,WSL2 正式推出。

WSL2 附带了一个真实的 Linux 4.19 内核,能够带来完整的系统调用兼容性,并且能够直接借助自动更新进行升级维护,无需更新整个Windows Linux的子系统。

同时,WSL2将比第一代的WSL1版本运行速度更快,提升了文件系统的I/O性能和与Linux的兼容性,且可本机直接运行 Docker 容器等这点我喜欢,嘿嘿)。

那么咱们来查看一下我们上面安装的 WSL 版本,

执行命令 wsl -l -v,如果是这个结果,那么恭喜你呀,WSL 1!

image-20200607102652775

什么?我的结果不是这样???怎么我执行命令控制台提示什么无效的命令选项????
类似下面这样的结果,没事,我知道你会这样,毕竟我是一步步爬着过来的,跟我一起继续往下看。

image-20200607111719671

那么,咱们接下来说,WSL2 使用是有门槛的

你的系统,需要是满足版本的内部版本,强调一下内部版本,其实就是预览(不稳定)版本。

image-20200607112203509

所以,下面要不要升级到 WSL2,有两方面考虑,

  • 一个是你的 windows 版本能不能跟的上
  • 另一个你能不能承担升级预览版本带来的风险?

如果满足不了,就折腾 WSL 1 也挺好,最起码体验一把 windows 的进步。

先升级到内部预览版本

步骤就不写了
百度找一篇给你【Windows】WIN10如何获取内部预览版本

注意:不是你填个信息申请一下立马就可以用到内部预览版了,要等 windows 推送给你,我大概等了三四天,发现有更新了,然后更新后再执行 wsl -l -v,就正常了。

image-20200607114436053

更新后,主界面,右下角,会有一些内部预览版的标识。。。

image-20200607214630606

准备好了吗?下面咱们开始更新到 WSL2 吧,跟我一起不停的重启电脑。。。

更新到 WSL 2

启用“虚拟机平台”可选组件

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

image-20200607112931349

重新启动计算机,以完成 WSL 安装并更新到 WSL 2。

将 WSL 2 设置为默认版本

在 Powershell 中运行以下命令,将 WSL 2 设置为默认版本:

# 1.WSL 提供了版本转换工具,将 wsl1 转为 wsl2,
# 注意转换时间可能较长,耐心等待,如果时间太久没反应,时不时按下 Enter 看看有没有更新
wsl --set-version Ubuntu-20.04 2
# 2.将 WSL2 设置为默认版本
wsl --set-default-version 2

image-20200607134904093

现在我们运行wsl -l -v,看到 VERSION 已经是 2 了!

再次恭喜,我们已经成功将 WSL 1 升级为 WSL 2 了!!!

一个真正的 Linux 内核的系统已经在你的 Windows 里了!

在WSL2子系统Ubuntu中安装Docker-CE

其实我升级WSL 2 的目的,是想体验原版的 Docker 的,哈哈,来吧,既然都跟到这里了,就开始吧!
安装 Docker-CE
$ curl -skSL https://mirror.azure.cn/repo/install-docker-ce.sh | sh -s -- --mirror AzureChinaCloud
http://mirror.azure.cn/help/d...

image-20200607154054964

启动Docker,查看 Docker 版本
$ sudo service docker start
$ sudo docker version
跑个应用?

你说你装好了,倒是跑个应用看看呀?

好吧,

像 Docker 官网的安装步骤一样,也会有这么一步,通过运行 hello-world 映像来验证 Docker Engine 是否已正确安装。

$ sudo docker run hello-world

image-20200607155649450

我成功了,你呢?

感兴趣可以跟下来实操哦,毕竟我是一点点坑爬上来的才有这篇文章,为了复原真实步骤,装了两次 WSL。

只点赞或收藏等于学会?不存在的,实操一下吧!


猴哥一一
136 声望9 粉丝

Java开发工程师