Windows Subsystem for Linux(WSL)无疑大大提升了Windows下程序开发的体验。

WSL 2向开发者提供的完整的系统调用兼容,使得许多无法在WSL 1中安装的应用,如Docker在WSL 2下成为可能。

WSL 2要求Windows 10 build 18917 或更高版本,否则无法使用。

查看Win10构建号

win + R
输入:
winver

弹窗如下,显示当前的构建号:

如果build低于18917,就需要升级Win 10。

更新Win10到18917+

参考:

https://www.jb51.net/os/win10/678060.html

WSL 1升级WSL2

由于笔者的Win10已经安装了WSL 1,因此需要从WSL 1升级到WSL 2。

首先启用“虚拟机平台”可选组件,在管理员身份打开的PowerShell中输入:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

执行成功后立即重启生效。

接着使用命令行设置要由 WSL 2 支持的发行版,在 PowerShell 中运行:

wsl --set-version <Distro> 2

并确保将 <Distro> 替换为发行版的实际名称。 (可以使用以下命令查看:wsl -l)。

由于笔者使用的是Ubuntu发行版,因此在powershell中执行:

wsl --set-default-version 2
wsl --set-version Ubuntu 2

其中wsl --set-default-version 2 将今后所有安装WSL发行版初始化为WSL 2发行版。等待上述转换完成,这个过程可能会花费一些时间。

接着就可以在powershell中执行:

wsl -l -v

查看使用的WSL的版本。如:

PS C:\WINDOWS\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2

在Win10中安装SSH Client

参考:

https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

Powershell启动WSL

参考:

https://devblogs.microsoft.com/commandline/a-guide-to-invoking-wsl/

即只要在PowerShell中输入:

wsl

即可启动WSL。

通过PowerShell命令:

wsl --shutdown

也可以关闭当前运行的所有WSL实例。

除了PowerShell这种方式外,Windows还提供了快捷方式,我们的WSL通常是从Win 10的应用商店中安装的,找到Win 10本地安装WSL应用后的快捷方式,也可启动同时弹出对应WSL的终端。

WSL中安装SSH服务并启动

这个过程相当于在Linux中安装sshd,相关资料非常多,这里不赘述。

后续可以在Win 10中通过ssh客户端访问WSL,好处是可以使用自己喜欢的终端工具。

VSCode安装Remote Development套件

VSCode集成了对WSL的支持,便于在VSCode开发时操作WSL。

参考:

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

VSCode中配置SSH Config连接配置文件

示例:

Host WSL-UBUNTU
HostName 172.31.165.60
User darren

其中172.31.165.60是在WSL中执行网络查看命令如ifconfig查询到的。

VSCode连接成功WSL后,VSCode后续打开的所有Terminal都将是WSL上的终端,而不是Win10本地的终端。

VSCode打开WSL目录

在VSCode连接到WSL中之后,打开VSCode中的终端,此时终端连接的是WSL,在终端中cd到目标目录,输入:

code .

即可在VSCode中打开WSL内系统的目录。

Win 10 访问 WSL内部文件系统

如果我们想在Win 10和WSL之间进行文件的传输,Windows提供了非常方便的支持,上述通过VSCode是一种方式。

此外,在WSL中的用户home目录,输入:

explorer.exe .

Win 10就会弹出一个资源浏览器,支持以Windows窗口的形式浏览WSL中的文件系统,非常方便。

此外,PowerShell提供了一种访问WSL的命令行形式:

cd \\wsl$\{distro_name}\

例如,我的WSL是Ubuntu发行版,就在PowerShell下输入:

cd \\wsl$\Ubuntu

即可在PowerShell中浏览WSL的文件系统了。

WSL 2的神坑

原本当我在WSL 2 Ubuntu中安装了Docker-CE,这一在WSL 1中不敢想的事情时,我非常开心,觉得Windows在开发方面终于可以越来越接近MacBook,同时可以和Windows的虚拟机说拜拜了。

但是后续的使用中发现了 WSL 2存在的一个神坑,即每次重启Windows系统,WSL实例的IP地址就会动态变动,哈哈哈哈哈哈哈,每次查WSL实例的IP也是醉了。

当然网上也有一些开源的解决方案如每次启动时动态查询其IP,然后修改Windows的hosts文件,应用对WSL的访问不要使用IP而是用hosts文件中的主机名等等。

然而我还是觉得为WSL分配固定的IP应该是开发者的刚需,估计后续的Win 10版本也应该会修复这个问题。

总体说来,瑕不掩瑜,笔者已经在Windows 10 WSL 2愉快的玩Docker了,随着Win 10的不断成熟,我相信借助WSL应该会成为今后Windows上集成Docker的主流方式。

Windows 10 之 WSL 2的更多相关文章

  1. Copy Files from Windows 10 to wsl

    Method 1 reboot( close wsl window and reopen ) Method 2 – Windows System Drive as a Mount point Wind ...

  2. 黑科技抢先尝(续) - Windows terminal中WSL Linux 终端的极简美化指南

    目录 修改默认源,为apt-get安装提速 安装python 和 python pip 安装 zsh 安装powerline-font中的特定字体 安装powerline-shell 修改~目录下的配 ...

  3. 如何重启 Windows 10 子系统(WSL) ubuntu

    如何重启 Windows 10 子系统(WSL) ubuntu WSL 子系统是基于 LxssManager 服务运行的. 只需要将 LxssManager 重启即可. 可以做成一个 bat 文件. ...

  4. 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程(一)(2019-08-23)

    目录 使用 Windows 10 WSL 搭建 ESP8266 编译环境并使用 VSCODE 编程 安装前准备 安装 ESP8266 工具链 下载 ESP8266 SDK 编译 花絮 使用 Windo ...

  5. 使用 VSCODE 在 Windows 10 WSL 中远程开发

    使用 VSCODE 在 Windows 10 WSL 中远程开发 安装 VSCODE 1.35+ 版本. 在 VSCODE 中安装 WSL 插件. 点击左下角的 WSL 图标. 打开项目,提示路径. ...

  6. 笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 (2019-06-09)

    笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 原因 为了和服务器一样的运行环境. 使用 Ubuntu 运行 Odoo 运行更快. 方便使用 Windows 10 ...

  7. Windows 10 WSL 2.0安装并运行Docker

    在Windows 10 2004版本,微软更新WSL到了2.0,WSL 2.0已经拥有了完整的Linux内核!今天来测试一下,是否可以安装docker!  一.开启WSL 以管理员运行Powershe ...

  8. 如何在 Windows 10 上安装 WSL 2

    翻译自 Joey Sneddon 2020年10月30日的文章<How to Install WSL 2 on Windows 10> [1] 如果您想在最新的 Windows 版本中尝试 ...

  9. Windows 10 运行原生Bash【Ubuntu】

    当前widnows用户的 AppData\Local\lxss 目录下安装了ubuntu,其中rootfs是和ubuntu安装的目录一致 bash进入的就是LINUX的SHELL,因此其二进制格式是E ...

随机推荐

  1. 且看一文梳理VS2019中dll的创建使用

    动态链接库(dll) Windows下有静态链接(lib)库和动态链接库(dll)两种共享代码的方式. 本文将介绍dll的应用场景,以及在vs2019平台下的生成和使用. 今天的笔记内容说的是平时经常 ...

  2. 给 Arm 生态添把火,腾讯 Kona JDK Arm 架构优化实践

    前言 Arm 架构以其兼具性能与功耗的特点,在智能终端以及嵌入式领域得到了广泛的使用,不断扩大其影响力.而在 PC 端以及数据中心,之前往往是 x86 架构在其中发挥着主要的作用.最近,随着人工智能. ...

  3. 【笔记】sklearn中的SVM以及使用多项式特征以及核函数

    sklearn中的SVM以及使用多项式特征以及核函数 sklearn中的SVM的使用 SVM的理论部分 需要注意的是,使用SVM算法,和KNN算法一样,都是需要做数据标准化的处理才可以,因为不同尺度的 ...

  4. CAS 5.3服务器搭建

    一.本例环境说明 JDK 1.8 CAS 5.3 apache-maven-3.6.0 二.CAS安装步骤 2.1 提前安装好JDK和Maven环境 安装步骤略 2.2 CAS环境搭建 2.2.1 C ...

  5. JSTL标签工具类

    一.介绍: ​ 1.Jsp Standrad Tag Lib: JSP中标准的标签工具类 ​ 2.由 sun公司 提供 ​ 3.组成:(1)核心标签:Java在jsp上基本功能进行封装 if whil ...

  6. 基于kail的docker下安装sqli-labs

    后面的关卡涉及到转码问题,比如空格,在Windows中会受到限制,比如24关的文件重命名问题,所以在这记录下在docker下安装sqli-labs,在linux下运行就不会受到限制. 参考链接:htt ...

  7. 谈谈 Nginx 那点事【一】

    为什么突然决定总结Nginx ? 不知不觉8月份又要过完了,时间真是个无情的崽种. 写Nginx 首先,主要源于最近项目部署工作中和公司技术中心的人对接部署相关事宜流程太繁琐了.每个部门有各自的工作安 ...

  8. 题解 Medium Counting

    传送门 又是神仙DP 发现如果只有两个串就很好做了 于是这个神仙DP定义就从这里下手:令 $dp[p][c][l][r] 表示在 \([s_l, s_r]\) 这段字符串中,考虑从第 \(p\) 个位 ...

  9. 如何快速排查发现redis的bigkey?4种方案一次性给到你!

    本篇文章将以redis的bigkey为主题进行技术展开,通过从认识redis的高性能,bigkey的危害.存在原因.4种解决方案,到模拟实战演练的介绍方式,来跟大家一起认识.探讨和学习redis. 先 ...

  10. 【springboot】知识点总结

    [springboot 基础编] 01.SpringBoot>01 - 第一个应用–HelloWorld 02.SpringBoot>02 - 整合 MyBatis 03.SpringBo ...