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. Compile Java Codes in Linux Shell instead of Ant Script

    The following is frequently used ant script, compile some java source codes with a libary path, then ...

  2. FSM自动售货机 verilog 实现及 code 细节讲解

    1.题目: 饮料1.5 元, 可投入硬币1 元 0.5 元,输出饮料 零钱 2. 画出状态机. 3.仿真结果:coin=1 --> 0.5 元 coin=2-->1元 4.关键代码分析: ...

  3. MyBatis学习02(配置解析)

    配置解析 核心配置文件 mybatis-config.xml 系统核心配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 能配置的内容如下: configur ...

  4. Vue系列-03-vue-cli自动化工具

    使用Vue-CLI创建项目 安装vue-cli脚手架 Mac安装vue-cli脚手架 lichengguo@lichengguodeMacBook-Pro ~ % sudo npm install - ...

  5. 【C语言】浮点型在内存中的存储

    1. 摘要 在了解到C语言中整型是以二进制补码形式存储在内存中后,我们不禁很好奇:那么浮点型的数据是以什么形式存储在内存中的呢? 实际上,早在1985年,电气电子工程师学会就制定了IEEE 754标准 ...

  6. 十七:使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  7. WPF---数据绑定之Xml数据源(四)

    一.场景 现在外部有一xml文件,我们想将该xml文件中的内容绑定到ListView中,该如何实现? 二.实现 xml文件的内容如下: <?xml version="1.0" ...

  8. WPF---依赖属性(二)

    一.概要 我们将会通过一个简单的综合例子来阐述下依赖属性的变化. 场景:我们在一个文本框中输入一个数字,然后对应的panel中会出现对应的椭圆,椭圆的个数与输入的文本相同. 我们在MainWindow ...

  9. The Programmer's Oath程序员的誓言----鲍勃·马丁大叔(Bob Martin)

    In order to defend and preserve the honor of the profession of computer programmers, I Promise that, ...

  10. Python3-sqlalchemy-orm 回滚

    #-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ...