WSL2 + Docker + xfce4安装及使用

WSL2 + Docker + xfce4安装及使用WSL2 Docker 安装及使用 WSL 官方指南 适用于 Linux 的 Windows 子系统安装指南 Windows10 文档比较详细 欢迎大家指错一 前言 1 1 什么是 WSL wsl 是适用于 Linux 的 Windows 子系统 英语 WindowsSubsy 简称 WSL 是一个为在 Windows10 和 WindowsServe 上能够原生运行 Linux 二进制可执行文件 ELF 格式 的兼容层 可让开发人员按原样运行 GNU Linux

WSL2 + Docker + xfce4安装及使用

WSL官方指南:适用于 Linux 的 Windows 子系统安装指南 (Windows 10)

文档比较详细,而且会持续更新,欢迎大家指错。

文章目录

本文内容:主要记录WSL2下安装与使用ubuntu,WSL中ubuntu的图形界面的安装,以及对图形界面的调教,还有 Docker 安装。

一、前言

1.1 什么是WSL?

wsl 是适用于 Linux 的 Windows 子系统(英语:Windows Subsystem for Linux,简称WSL)。是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层,可让开发人员按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – 且不会产生传统虚拟机或双启动设置开销

简单来说,以前想在windows中使用linux,需要安装vmware虚拟机,现在则不比这么麻烦了,直接安装linux子系统,秒开

1.2 比较 WSL 1 和 WSL 2

WSL 2 是WSL 1的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及支持完全的系统调用兼容性

相对于WSL采用API转换的方式, WSL 2 则完全不同,win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高度集成,实现了虚拟机的高性能运行,WSL2 便是运行在虚拟机上的一个完整的 linux 内核,比如Docker、cgroup、iptables、GPU、图形界面这些功能都能正常工作。。因此 WSL 2 给了在 windows 更接近原生linux的体验,同时WSL 2 的开启速度有了非常明显的提升,几乎不需要再等待。

这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。

WSL 1 和 WSL 2 的主要区别和优势可以参考官方文档:比较 WSL 1 和 WSL 2。

1.3 WSL可以做什么?

  • 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
  • 运行常用的命令行软件工具(例如 grepsedawk)或其他 ELF-64 二进制文件。
  • 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序;
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 与 F#、Rust、Go 等。
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
  • 使用自己的 GNU/Linux 分发包管理器安装其他软件。
  • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
  • 在 Windows 上调用 GNU/Linux 应用程序。

装完WSL2后,我就把Windows上跑的Docker、Mysql、nginx 等服务迁进了容器,这就很nice

二、便捷自动安装(本人未测试)

注意:看了官方介绍,感觉手动安装其实并不会比自动安装繁琐,总共也就几步操作而已。自动安装无法把控细节,我倾向手动安装。这里不过多介绍,看官方文档即可

建议浏览WSL官方指南:安装 WSL | Microsoft Docs

官方已经更新便捷的安装方式,现在,可以在管理员 PowerShellWindows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。

wsl --install 

此命令将启用所需的可选组件,下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版(默认安装 Ubuntu)。

三、手动安装 WSL 2

WSL官方指南:旧版 WSL 的手动安装步骤 | Microsoft Docs

3.1 启用适用于 Linux 的 Windows 子系统*

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

  • 方法一:通过命令来启用

    管理员身份打开 ”Windows PowerShell“ 或者”命令提示符“,并运行:

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

    执行结果:

    C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 部署映像服务和管理工具 版本: 10.0.18362.1379 映像版本: 10.0.18363.1500 启用一个或多个功能 [==========================100.0%==========================] 操作成功完成。 
  • 方法二:在windows功能中手动设置

    在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭Windows功能”,勾选对应选项即可:

    WSL2 + Docker + xfce4安装及使用

如果只想安装 WSL 1,现在可以重新启动计算机,然后继续安装所选的 Linux 发行版。 若要更新到 WSL 2,请先继续执行下一步,之后再重新启动计算机。

3.2 更新到 WSL 2

3.2.1 检查运行 WSL 2 的要求

若要更新到 WSL 2,需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本。

WSL2 + Docker + xfce4安装及使用

备注:

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。 阅读详细信息:WSL 2 即将支持 Windows 10 版本 1903 和 1909。 请参阅疑难解答说明。

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

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

  • 方法一:通过命令来启用

    管理员身份打开 ”Windows PowerShell“ 或者”命令提示符“,并运行:

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

    执行结果:

    C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 部署映像服务和管理工具 版本: 10.0.18362.1379 映像版本: 10.0.18363.1500 启用一个或多个功能 [==========================100.0%==========================] 操作成功完成。 
  • 方法二:在windows功能中手动设置

    在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭Windows功能”,勾选对应选项即可:

    WSL2 + Docker + xfce4安装及使用

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

检测是否开启虚拟化,打开任务管理器 -> 性能 -> 虚拟化已启用

WSL2 + Docker + xfce4安装及使用

3.2.3 将 WSL 2 设置为默认版本

安装新的 Linux 分发版之前,请以管理员身份打开 ”Windows PowerShell“ 或者”命令提示符“中运行以下命令,以将 WSL 2 设置为默认版本

先检查 WSL 状态,查看有关 WSL 配置的常规信息,例如默认发行版类型、默认发行版和内核版本。

wsl --status 

如果默认版本不是2,则执行以下命令:

wsl --set-default-version 2 

正常情况下,出现以下信息

C:\WINDOWS\system32>wsl --set-default-version 2 有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2 操作成功完成。 

但如果执行结果如下,则需要更新 Linux 内核,操作见下一步,更新完,继续设置默认版本

C:\WINDOWS\system32>wsl --set-default-version 2 WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel (WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel) 有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2 

设置完后,这会使你安装的任何新发行版均初始化为 WSL 2 发行版。

3.2.4 下载 Linux 内核更新包
  1. 下载最新包:
  • 适用于 x64 计算机的 WSL2 Linux 内核更新包

    备注:

    如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo | find "System Type"警告: 在非英语 Windows 版本中,你可能需要修改搜索文本,例如在德语中为 systeminfo | find "Systemtyp"

  1. 运行上一步中下载的更新包。 (双击以运行,系统将提示你提供提升的权限,选择“是”以批准此安装。)

安装完成后,请继续执行之前失败的操作。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)

3.3 安装所选的 Linux 分发版

Windows 10 的 WSL 2 需要依赖于WSL 发行版,Microsoft Store中的WSL 发行版应用。适用于 Linux 的 Windows 子系统安装是会自动装在系统驱动器(通常是 C: 驱动器)中运行,所以注意C盘的空间。(注意:如果需要修改安装位置,请先查看下文自定义安装方法,再来查看本节其他配置介绍)。

查看当前已安装发行版

wslconfig /l 

wsl --list --all 
3.3.1 下载 Linux 分发版

注意,如果是自定义安装,则跳过该步骤

  1. 打开 Microsoft Store,并选择你偏好的 Linux 分发版 (如果上述连接打开有错,请直接打开 Microsoft Store 搜索)。这里推荐使用最新得长期稳定版,目前是 Ubuntu 20.04 LTS

WSL2 + Docker + xfce4安装及使用

单击以下链接会打开每个分发版的 Microsoft Store 页面,(如果下述连接打开有错,请直接打开Microsoft Store搜索)。:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS
  • openSUSE Leap 15.1
  • SUSE Linux Enterprise Server 12 SP5
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux
  • Debian GNU/Linux
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL
  • Raft(免费试用版)
  1. 在分发版的页面中,选择“获取”。

    注意:这样会自动安装到系统盘,如果需要更改安装目录,参考下文[[#3.4 自定义分发版安装目录(可选,推荐)]]

WSL2 + Docker + xfce4安装及使用

3.3.2 设置新分发版

首次启动新安装的 Linux分发版时,将打开一个控制台窗口。(自定义安装则是双击安装目录的 Ubuntu*.exe 文件,就是之前安装的应用,如果第一次启动ubuntu失败,可以重启电脑再次试下)

如果还是出错,参考下文[[#3.8 可能出现的问题]]

WSL2 + Docker + xfce4安装及使用

系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码

WSL2 + Docker + xfce4安装及使用

祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

  • 用户名密码 特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 创建 用户名密码 后,该帐户将是分发版的默认用户,并将在启动时自动登录(可修改)。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在适用于 Linux 的 Windows 子系统上运行的每个 Linux 分发版都有其自身的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。

安装完后,可用 wsl -l -v 查看Linux 分发版的 WSL 版本(后面有详解)

PS C:\Users\wys> wsl -l -v NAME STATE VERSION * Ubuntu Running 2 
3.3.3 修改ubuntu的apt安装源

第一步:进入 ubuntu,备份源文件

cp /etc/apt/sources.list /etc/apt/sources.list.bak 

第二步:编辑 /etc/apt/sources.list 文件,更换成国内源

注意,以下是Ubuntu 20.04版本

  • 网易源
#网易源 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse # deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse # deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse # deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse # deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse # 预发布软件源,不建议启用 # deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse # deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse 
  • 阿里源 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
#阿里源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 
  • 清华源https
#清华源https # 默认注释了源码镜像以提高 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 

我这里使用的阿里源,可直接执行如下命令

echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse">/etc/apt/sources.list 

注意,以下是Ubuntu 22.04版本

  • 网易源
    deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse 
  • 阿里源 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
    deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse 
  • 清华源
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 

然后执行更新

apt update && apt upgrade -y 
3.3.4 重置 Linux 密码(可选)

若要更改密码,请打开 Linux 分发版(例如 Ubuntu)并输入以下命令:passwd

系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。

3.3.5 忘记密码(可选)

如果忘记了 Linux 分发版的密码:

  1. 请打开 PowerShell,并使用以下命令直接进入默认 WSL 分发版的根目录:wsl -u root

    如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,记得将 Debian 替换为目标分发版的名称。

  2. PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd
    ,其中
    是 DISTRO 中帐户的用户名,而你忘记了它的密码。
  3. 系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用命令 exitPowerShell 内关闭 WSL
3.3.6 修改root用户密码(可选)
  • WSL 默认是没有设置 root 密码的,系统实现的是每次开启时随机设置root密码,导致无法切换到root权限进行操作
  • 设置 root 用户密码,这样要输三次命令,第一次当前用户密码,后两次就是设置密码以及确认密码
    # 语法: sudo passwd 用户名 sudo passwd root 
  • password updated successfully 代表密码更新成功,切换用户
    # 语法: su 用户名 su root 

如果我们想要使用 root 用户的话,为了避免 sudo 切换 root 是需要输入密码,把自己配置的用户名加到sudo免密中,命令如下:

 # 替换leap为自己单独配置的用户名 sudo echo "leap ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers 
3.3.7 修改默认用户root(可选)
  • 查看自己安装的哪个版本

    可以去 Microsoft Store 商店 – 我的软件 – 已安装, 中查看

    WSL2 + Docker + xfce4安装及使用

我这里安装的是 ubuntu,我就以 ubuntu 为例

  • 查看修改命令,输入ubuntu 按回车会自动补全版本对应的命令
    # 如果安装的是ubuntu1804,则命令可能是  ubuntu /? 或者 ubuntu1804 /? 

    WSL2 + Docker + xfce4安装及使用

  • 设置默认用户
    # 语法: ubuntu config --default-user 用户名(已存在的) # 如果安装的是ubuntu1804(可用wsl -l -v 查看),则命令也可能是ubuntu1804 config --default-user 用户名(已存在的) PS C:\WINDOWS\system32> ubuntu config --default-user root PS C:\WINDOWS\system32> # 没有报错就代表成功 
  • 注意,如果出现以下错误(一般情况是因为采用自定义分发版安装才会出现该情况
    PS C:\Users\Administrator> ubuntu config --default-user root 正确,然后再试一次。 所在位置 行:1 字符: 1 + ubuntu config --default-user root + ~~~~~~ + CategoryInfo : ObjectNotFound: (ubuntu:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 

    这个错误是说无法识别该命令。你需要找到以 ubuntu 开头的 exe 文件(即安装目录,可使用强大的绿色搜索工具 everything 搜索),比如我的是 ubuntu.exe,然后在==管理员权限的命令终端==中 cd 进入所在目录,再来执行以上命令

重新打开已经是 root 用户了

WSL2 + Docker + xfce4安装及使用

3.4 自定义分发版安装目录(可选,推荐)

我的电脑我做主,C盘寸土不让,离线安装

3.4.1 如果未安装分发版

Microsoft Store下载的 WSL 发行版会自动安装到C盘不能手动选择安装位置。微软提供了一个手动下载WSL发行版的网址,可以绕开MS Store的自动安装

  1. 手动下载,下载地址:下载发行版 | Microsoft Docs

WSL2 + Docker + xfce4安装及使用

  1. 选择想要的发行版下载后,可以得到一个后缀名为 .AppxBundle 的文件。(官方文档说是 .appx的文件,其实是错的,很多博客也跟着瞎抄。)把这个 .AppxBundle 的文件的后缀改为.zip,然后解压到,这才能得到 .appx的文件。

WSL2 + Docker + xfce4安装及使用

  1. 根据系统型号,选择对应的 .appx的文件后缀改为.zip,然后解压到想要安装 WSL 的目录下,我们可以得到一些文件。

WSL2 + Docker + xfce4安装及使用

  1. 找到 xxx.exe文件(如ubuntu.exe,其他发行版的话也有类似的程序)双击打开,等待一段时间就可以安装成功。然后就跟上述 [[#3.3.2 设置新分发版]] 一样,开始设置用户名和密码。

注意

安装目录的磁盘不能开==压缩内容以便节省磁盘空间==选项,否则会报错 0xc03a001a

可以右键文件夹–>属性–>常规–>高级找到并关闭这个选项,开了压缩功能的文件夹右上角会有两个蓝色的小箭头

WSL2 + Docker + xfce4安装及使用

3.4.2 如果已经安装分发版(未测试)
  • 如果之前的数据不重要,可以删除原来安装在C盘的发行版

    首先停止 Linux 发行版在 WSL 的运行(这里以 Ubuntu 18.04 为例):

    wsl -l -v wsl -t Ubuntu-18.04 wsl --shutdown wsl -l -v 

    查看 Windows 系统已经安装的软件包:

    Get-AppxPackage -allusers | Select Name, PackageFullName 

    删除 Ubuntu 发行版

    get-appxpackage CanonicalGroupLimited. 
        <发行版名称和版本号>
          onWindows 
         | 
         remove-Appxpackage 
        

    这里以 Ubuntu 18.04 为例,所以要将 “
    <发行版名称和版本号>
    ” 替换为 “Ubuntu18.04” , 如果是 Ubuntu

    20.04 ,那么就应当替换为 “Ubuntu20.04”。



    删除 Ubuntu 18.04

    get-appxpackage CanonicalGroupLimited.Ubuntu18.04onWindows | remove-Appxpackage 

    然后开始重新安装,按照上一步未安装分发版的流程即可。

  • 如果是想直接迁移之前数据,操作如下:
    1. 首先查看所有分发版本
      C:\Users\Administrator>wsl -l -v NAME STATE VERSION * Ubuntu Running 2 
    2. 导出分发版为tar文件到d盘
      wsl --export Ubuntu D:\wsl\ubuntu\ubuntu.tar 
    3. 注销当前分发版
      wsl --unregister Ubuntu 
    4. 重新导入并安装分发版在 D:\wsl\ubuntu\
      wsl --import Ubuntu D:\wsl\ubuntu D:\wsl\ubuntu\ubuntu.tar --version 2 
    5. 设置默认登陆用户为安装时用户名
      ubuntu config --default-user Username 
    6. 删除tar文件(可选)
      del D:\wsl\ubuntu\ubuntu20.04.tar 

3.5 安装 Windows Terminal终端(可选,推荐安装)

安装 Windows Terminal,可用于和 WSL 子系统交互。强烈推荐

Windows 终端(Windows Terminal)可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。 了解详细信息。

官方文档:安装和设置 Windows 终端。

3.5.1 微软商店自动安装

可以从 Microsoft Store 安装 Windows 终端。

WSL2 + Docker + xfce4安装及使用

3.5.2 手动离线安装

如果你无法访问 Microsoft Store,GitHub 发布页上发布有内部版本。 如果从 GitHub 安装,终端将不会自动更新为新版本。(我就是在github上下载的,因为Microsoft Store突然无法安装应用,网上说是需要更新系统版本,但我系统已经更新过了。)

  1. Windows Terminal 的 GitHub 发布页 下载最新的release包,即以 .msixbundle 为后缀的文件
  2. 将文件后缀名改为 .zip 后解压缩文件
  3. 在解压后的文件夹中找到名为 CascadiaPackage*.msix 的文件,有x86、x64和ARM64版本的,选择x64那个文件,修改后缀名为 .zip,然后解压
  4. 在解压后的文件夹中,找到 WindowsTerminal.exe 的文件,直接双击就能运行了,还是绿色免安装版的
  5. 可以把这个文件夹拷贝到安全的位置,然后将 *.exe 文件添加到桌面快捷方式,就能轻松使用 Windows Terminal

WSL2 + Docker + xfce4安装及使用

3.6 查询WSL状态、设置分发版版本

可打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 18362 或更高版本中可用),检查分配给每个已安装的 Linux 分发版的 WSL 版本:

wsl -l --all -v 

或者

wsl --list --all --verbose 

若要将分发版设置为受某一 WSL 版本支持,请运行:

wsl --set-version 
   
   
     或者 wsl 
    -s 
     
      
      
     
    
  

请确保将
替换为你的分发版的实际名称,并将
替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

从 WSL 1 更新到 WSL 2 可能需要几分钟才能完成,具体取决于目标分发版的大小。 如果从 Windows 10 周年更新或创意者更新运行 WSL 1 的旧(历史)安装,可能会遇到更新错误。 按照这些说明卸载并删除任何旧分发。

如果 wsl --set-default-version 结果为无效命令,请输入 wsl --help。 如果 --set-default-version 未列出,则表示你的 OS 不支持它,你需要更新到版本 1903(内部版本 18362)或更高版本。 如果你在使用 ARM64 版本 19041,那么当使用 PowerShell 时,此命令可能会失败;在这种情况下,你可使用命令提示符,而不是发出 wsl.exe 命令。

运行命令后如果看到此消息:WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel。 仍需要安装 MSI Linux 内核更新包(见上文)。

此外,如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:

wsl --set-default-version 2 

这会将安装的任何新分发版的版本设置为 WSL 2。

3.7 安装WSL的systemd命令(可选)

由于 Linux 环境应用程序(如Ubuntu,Debian,OpenSuse或Kali)不支持为Linux操作系统提供基本构建块的 Systemd,使用的是经典的SysV init(sysvinit)系统,因此我们无法使用 reboot 或使用 systemctl 命令来管理 systemd 服务。

在 WSL 中可以用SysV init的命令代替 systemd 命令

WSL2 + Docker + xfce4安装及使用

systemd 还是很重要的(例如:不安装可能会导致下面图形化界面安装失败)。如果需要,可通过以下方式安装:

  1. 安装git
    sudo apt install git 
  2. 运行脚本和命令
    git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git cd ubuntu-wsl2-systemd-script/ bash ubuntu-wsl2-systemd-script.sh 
  3. 然后重新启动 ubuntu shell 并尝试运行 systemctl
    systemctl 

如果报错:System has not been booted with systemd as init system (PID 1). Can’t operate.

root@DESKTOP-58FD2RV:/home# systemctl System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down 

解决办法:

# 安装daemonize sudo apt-get install daemonize #执行以下命令开启 sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME 

3.8 可能出现的问题

3.8.1 参考的对象类型不支持尝试的操作
  • 问题:从terminal启动ubuntu1804报错:参考的对象类型不支持尝试的操作。直接启动ubuntu,出现1804报错

    解决办法:以管理员身份打开”Windows PowerShell“,然后执行 netsh winsock reset,然后继续操作(如果还是不行,重启电脑即可)

3.8.2 关于Hyper-V是否需要开启

问题:Windows 10 安装了 wsl2,整个安装过程是不需要启用 Hyper-V,但是网络很多的讨论和教程都提到说 wsl 2 用的时 Hyper-V。

官方文档有提到

WSL 2 is available on all SKUs where WSL is currently available, including Windows 10 Home. The newest version of WSL uses Hyper-V architecture to enable its virtualization. This architecture will be available in the 'Virtual Machine Platform' optional component. This optional component will be available on all SKUs. 

就是说,WSL 的最新版本使用 Hyper-V 架构来实现虚拟化,该架构可用在“虚拟机平台”可选组件中。因为这个”虚拟机平台“就是一个精简版的 Hyper-v,所以开启“虚拟机平台”即可。

3.8.3 关于Windows 10 家庭版能否安装WSL2的问题

Windows 10 家庭版上没有 Hyper-V 功能。所以网上很多教程都提到需要安装 Hyper-V,这是不对的。

官方解释:WSL 2 在可使用 WSL 的所有桌面 SKU 上都可使用,包括 Windows 10 家庭版。

官方原文:关于适用于 Linux 的 Windows 子系统的常见问题解答 | Microsoft Docs

3.8.4 WSL 转换到版本 2 失败

如果显示错误消息,例如“转换失败”或“错误 0x03a001a 由于虚拟磁盘系统限制,无法完成请求的操作。虚拟磁盘文件必须是未压缩和未加密的,并且不能是稀疏的。”,请尝试检查以下内容。

  • 重新启动系统。
  • 必须在 BIOS 中启用虚拟化扩展,例如 Intel VT-x 或 AMD-V。
  • 必须为 Ubuntu AppData 文件夹禁用压缩和加密(请参阅Github 问题 #4103)。路径看起来像这样。

再次尝试将发行版转换为版本 2,操作应该会成功。

3.8.5 WslRegisterDistribution failed with error: 0xbc

WSL2 + Docker + xfce4安装及使用

造成该问题的原因是WSL版本由原来的 WSL1 升级到 WSL2 后,内核没有升级,前往微软WSL官网下载安装适用于 x64 计算机的最新 WSL2 Linux 内核更新包即可。

3.8.6 其他错误

可参考官方文档 关于适用于 Linux 的 Windows 子系统的常见问题解答 | Microsoft Docs

博客:WSL2 网络异常排查 [ping 不通、网络地址异常、缺少默认路由、被宿主机防火墙拦截]

四、WSL2使用帮助

4.1 网络访问方式(IP)

官方文档:使用 WSL |访问网络应用程序微软文档 (microsoft.com)

注意:在使用win10的wsl2子系统时,windows会通过虚拟交换机给win10本机wsl2子系统各自会分配一个ip地址。

18945之前的WSL2版本,如果我们在容器里运行了一个网络服务,例如启动一个WEB服务。想在 Win10 宿主机中访问这个WEB服务,我们先要通过 ip aifconfig 命令查看其IP地址才能访问,而且更崩溃的是每次重启后再运行WSL2容器,虚拟交换机会被重新创建,其IP地址和网关会重新分配。

但在版本18945之后,支持通过localhost访问WSL2容器,所以我们不用考虑这个问题了(有些博客更新不及时,容易误导新手)。

附上官方发行文档:微软WSL官方发行版本说明

注:可使用以下命令之一获取IP地址

ip addr | grep eth0 ifconfig 

如果非要固定IP,参考链接:WSL2固定ip地址

4.2 文件系统

WSL2中使用虚拟硬件磁盘来存储文件,在Windows下不能像WSL1一样直接访问C盘中的地址。

建议先浏览官方文档:跨文件系统|工作微软文档 (microsoft.com)

需要在Windows下访问Ubuntu的文件系统的话,可以有两种方式:

  1. 在Linux中运行 explorer.exe .

    可以立即打开Linux当前所在的文件目录,注意:.exe后面还有个空格后面再加一个点

  2. 在windows 的资源管理器的文件路径里、命令行窗口或者PowerShell中运行 \\wsl$\ubuntu,可以立即打开Linux当前所在的文件目录

    WSL2 + Docker + xfce4安装及使用

  3. 添加网络映射的形式添加
4.2.1 设置软连接快捷访问(可选)

你应该注意到了,当进入wsl2 后,默认处于 /mnt/c/Users/wys

WSL2 + Docker + xfce4安装及使用

查询磁盘,可以发现wsl2的文件结构有点特别,原先windows 系统的C盘和D盘被挂载到 /mnt 下,而且还多了一个 wsl 目录。

root@DESKTOP-58FD2RV:/# ls bin dev home lib lib64 lost+found mnt proc run snap sys usr boot etc init lib32 libx32 media opt root sbin srv tmp var root@DESKTOP-58FD2RV:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb 251G 1.2G 238G 1% / tmpfs 6.3G 0 6.3G 0% /mnt/wsl tools 171G 136G 36G 80% /init none 6.3G 0 6.3G 0% /dev none 6.3G 12K 6.3G 1% /run none 6.3G 0 6.3G 0% /run/lock none 6.3G 0 6.3G 0% /run/shm none 6.3G 0 6.3G 0% /run/user tmpfs 6.3G 0 6.3G 0% /sys/fs/cgroup C:\ 171G 136G 36G 80% /mnt/c D:\ 67G 24G 43G 36% /mnt/d 

而Ubuntu的文件,因为通过Microsoft Store安装的,默认在c盘,所以为了避免占用C盘空间,我用软连接,快捷访问D盘。在D盘中创建目录 mnt/d/wsl/Ubuntu ,以后的文件都放在这里。然后在wsl2 中直接访问 /home/ubuntu 即可,这样比较符合linux操作习惯。当然如果不闲麻烦,也可以每次手动进入D盘。

ln -s /mnt/d/wsl/ubuntu /home/ubuntu root@DESKTOP-58FD2RV:/# ll /home/ total 12 drwxr-xr-x 3 root root 4096 Apr 27 17:33 ./ drwxr-xr-x 19 root root 4096 Apr 26 16:29 ../ lrwxrwxrwx 1 root root 18 Apr 27 17:33 ubuntu -> /mnt/d/wsl/ubuntu// drwxr-xr-x 3 ycw ycw 4096 Apr 27 13:19 ycw/ 

五、安装Docker

凭借原生 Linux 内核,WSL2 拥有接近原生的文件系统性能,这导致 Docker 宣布其即将推出的Windows Docker版本将利用 WSL2而不是它目前依赖的 Moby Linux VM 在 Hyper-V 中运行 Linux 容器。您不再需要等待 Docker for Windows 启动其 VM。根据 Docker 的说法,WSL2 和 Docker 守护进程在他们的开发笔记本电脑上在 2 秒内启动,这意味着 WSL2 可以在容器启动的同时启动(而不是在启动时)。作为一个额外的好处,从容器到 Windows 主机的绑定挂载将不再依赖于 Samba 服务,而是由 WSL2 以更好的性能本地处理。

三种安装选项

因为 wsl 2 已经完整使用了 linux 内核了,所以现在有三种安装选项,主要是前两种

  • 安装Docker Desktop for Windows(设置wsl2访问)可以参考教程docker官方文档以及Microsoft WSL官方文档
  • 直接在Linux中安装Docker ce(此种方式和在linux虚拟机安装docker类似)可以参考Docker官方文档
  • Docker Toolbox for Windows(兼容Windows 10以下安装的方式,这里不讨论这种方式,不推荐

5.1 原生linux安装docker

因为wsl2已经完整使用了linux内核了,此种方式和先前在linux虚拟机安装docker类似,可以参考我之前的博客

阿里云社区Docker ce安装流程

linux安装方式有很多,这里将使用sh脚本形式来安装

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo service docker start 

执行脚本安装过程中,脚本提示“建议使用Docker Desktop for windows”,20s内按Ctrl+C会退出安装,所以需要等待20s,另外此种方式需要访问外网。

检查docker安装正常

# 检查dockerd进程启动 service docker status ps aux|grep docker # 检查拉取镜像等正常 docker pull busybox docker images 

注意:不同于完全linux虚拟机方式,WLS2下通过apt install docker-ce命令安装的docker无法启动,因为WSL2方式的ubuntu里面没有systemd。上述官方get-docker.sh安装的docker,dockerd进程是用ubuntu传统的init方式而非systemd启动的。

vim /lib/systemd/system/docker.service 修改文件 [Service] ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock 上面这一行,主要是增加了`-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock` 1. vim /etc/default/docker 2. 修改启动配置文件,如下: # 开启远程访问 -H tcp://0.0.0.0:2375 # 开启本地套接字访问 -H unix:///var/run/docker.sock DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 重启Docker sudo service docker restart 

5.2 Docker Desktop for Windows(推荐)

Docker 也专门开发了可以使用 WSL2 中的 Docker 守护进程的桌面管理程序,具体请查看docker官方文档 Docker Desktop WSL 2 backend (opens new window),打开 Docker Desktop WSL2 backend 页面,查看是否满足安装要求,然后下载最新的 Docker Desktop for Windows 程序 ,建议下载 stable 版本。

5.2.1 准备修改Docker Desktop软件默认安装路径(可选)

win10安装 docker desktop 时,没有提供选择权限,默认直接就安装到了c盘。我们可以修改默认安装路径,但是注意,这里只是修改了这个应用的程序安装位置而已,镜像和容器等数据还是默认存储在C盘。如果要修改镜像和容器等数据存储位置,下文有介绍。

网上总结的方法目前只有一种,就提前将c盘的docker安装路径软连接到其他盘,具体操作如下:

  1. 现在先建立Docker文件夹,例如 D:\software\Docker
  2. 如果已经安装的,需要去控制面板里先卸载
  3. 然后在命令提示符执行下边的命令(注意:需要管理员身份运行命令提示符)
    mklink /j "C:\Program Files\Docker" "D:\software\Docker" 

    成功如下

    WSL2 + Docker + xfce4安装及使用

  4. 最后通过下一步 [[#5.2.2 开始安装]]安装完后,可以发现 docker desktop 已经安装到了d盘

    WSL2 + Docker + xfce4安装及使用

5.2.2 开始安装

官方文档:Install Docker Desktop on Windows | Docker Documentation

  • 手动下载安装

    点击以下 [链接 (opens new window)](https://desktop.docker.com/win/stable/amd64/Docker Desktop Installer.exe)下载 Docker Desktop for Windows。下载好之后双击 Docker Desktop Installer.exe 开始安装。

  • 使用 winget (opens new window) 安装(未测试)
    winget install Docker.DockerDesktop 

    下载后直接安装,(为了避免不可预知的问题,最好用右键“以管理员身份运行”)。跟随安装界面,一路下一步即可。所有的选项都采用默认。安装成功后,点击“Close”关闭窗口。

安装成功后,启动Docker Desktop,然后在终端窗口执行命令检测是否安装成功

# 查询版本 docker version # 查询详细信息 docker info 
5.2.3 在 WSL2 运行 Docker

若你的 Windows 版本为 Windows 10 专业版或家庭版 v1903 及以上版本或 Windows 11,可以使用 WSL2 运行 Docker。

注意,这个时候在 WSL 里面执行 docker 命令是找不到的,需要设置一下。

  1. 打开 Docker Desktop Settings,选择General

    勾选Use WSL 2 based engine。(如果在已经支持WSL的操作系统上,安装Docker Desktop,那么这个选项是被默认选中的,无需更改。)

    WSL2 + Docker + xfce4安装及使用

    注意,如果不选中Use WSL 2 based engine,Resources下面就会回到之前版本的模样。自己制定CPU、内存等信息。但是该版本指定这些信息会出错(这是给WSL 1 用的)。

WSL2 + Docker + xfce4安装及使用

  1. 进入 Settings > Resources > WSL Integration

    在这个界面中,选择任何你想要使用的Linux发行版本(手动选择后,可以在Linux中来操作Docker)。

    WSL2 + Docker + xfce4安装及使用

    点击 Apply & Restart

  2. 重启 Docker desktop for Windows,重启完成后我们就可以在 WSL2里面使用 docker 命令了

在WSL2里面执行 df -Th ,会发现增加了一些新的与docker有关的挂载点。

5.2.4 修改镜像和容器等数据存储位置(可选)

因为我使用的是WSL2的版本,docker 运行数据都在 WSL 发行版中,文件位置都只能由 WSL 管理。因此 docker desktop 在安装的时候创建如下两个发行版(distro)

  • docker-desktop
  • docker-desktop-data

说明

这两个wsl子系统默认存放在系统盘(即使通过上文修改了Docker Desktop的安装路径),默认存储位置: %LOCALAPPDATA%/Docker/wsl (即 C:\Users\xxxxx\AppData\Local\Docker\wsl)。如果访问 %LOCALAPPDATA%/Docker/wsl 目录,就可以看到两个文件夹,同时每个文件夹中都会有一个 vhdx 文件。

  • data/ext4.vhdx 是被 docker-desktop-data 发行版使用,存放镜像
  • distro/ext4.vhdx 是被 docker-desktop 发行版使用,存放程序(内存占用小,根据需要,可以不用修改)

docker-desktop-data 是被用来存储docker images 以及相关的数据。因此,它的大小会随着使用逐步增长,因此导致系统盘空间不足。

vhdx文件最大支持256G,超过此大小,则可能需要对其进行扩展。参见:扩展 WSL 2 虚拟硬盘|的大小微软文档 (microsoft.com)

修改方法如下:

  • 方法一:通过 wsl 命令进行操作
    # 查看已创建子系统 C:\Users\xxxxx>wsl -l -v --all NAME STATE VERSION * Ubuntu Running 2 docker-desktop-data Running 2 docker-desktop Running 2 # 终止所有正在运行的docker发行版 # 可以使用以下命令立即终止所有正在运行的发行版,包括Ubuntu,可以手动退出Docker Desktop也行 C:\Users\xxxxx>wsl --shutdown # 再次查看,保证docker发行版也停止运行, C:\Users\xxxxx>wsl -l -v NAME STATE VERSION * Ubuntu Running 2 docker-desktop-data Stopped 2 docker-desktop Stopped 2 # 备份导出wsl子系统镜像(注意,根据官方说明,最好在停止发行版8秒后,再来操作) C:\Users\xxxxx>wsl --export docker-desktop E:\Docker\wsl\docker-desktop\docker-desktop.tar # 注意,原有的 docker images 也会一起导出 C:\Users\xxxxx>wsl --export docker-desktop-data E:\Docker\wsl\docker-desktop-data\docker-desktop-data.tar # 注销删除现有的wsl子系统,注销过后会发现原来在c盘的ext4.vhdx文件已经删除了 C:\Users\xxxxx>wsl --unregister docker-desktop 正在注销... C:\Users\xxxxx>wsl --unregister docker-desktop-data 正在注销... # 重新创建wsl子系统 C:\Users\xxxxx>wsl --import docker-desktop E:\Docker\wsl\docker-desktop E:\Docker\wsl\docker-desktop\docker-desktop.tar --version 2 C:\Users\xxxxx>wsl --import docker-desktop-data E:\Docker\wsl\docker-desktop-data E:\Docker\wsl\docker-desktop-data\docker-desktop-data.tar --version 2 

    根据需要,设置默认分发版(可选,因为我是默认使用Ubuntu,所以不执行)

    wsl -s docker-desktop 

    重新启动 docker desktop,验证docker服务是否可以正常使用。查看新目录中的vhdx的修改时间,如果修改时间是最新时间,就说明配置成功。然后随便拉个nginx下来启动试试。

    验证成功后,上面导出的两个文件根据自己需要进行删除。

    del E:\docker\wsl\docker-desktop\docker-desktop.tar del E:\docker\wsl\docker-desktop-data\docker-desktop-data.tar 
  • 方法二:通过软链接(未测试)
    1. %LOCALAPPDATA%/Docker/wsl/data 下的 ext4.vhdx 复制到想要的路径下,本文路径为:E:\Docker\wsl\docker-desktop-data
    2. 删除源文件夹,本文是 %LOCALAPPDATA%/Docker/wsl 下的 data 文件夹
    3. 以管理员运行cmd并且使用以下命令创建链接:
      mklink /J C:\Users\xxxxx\AppData\Local\Docker\wsl\data E:\Docker\wsl\docker-desktop-data 

      请大家自行替换路径,本文路径分别为源路径:C:\Users\Administrator\AppData\Local\Docker\wsl\data,以及想要移动的路径:E:\Docker\wsl\docker-desktop-data ,此时可以在源路径看到新建出来的软链接文件夹

    4. %LOCALAPPDATA%/Docker/wsl/distro下的 ext4.vhdx 也是同样的操作,这里不重复介绍
    5. 重新启动 docker desktop,验证docker服务是否可以正常使用。查看新目录中的vhdx的修改时间,如果修改时间是最新时间,就说明配置成功。然后随便拉个nginx下来启动试试。
  • 总结网上的其他方法(这些方法感觉不是很靠谱,未测试。有测试过的同行,麻烦踢我一下)
    • 方法一:打开docker desktop 的 Settings,点击左侧 menu,找到 Resources 按钮,点击并找到 Disk Image Location,然后进行修改(这种方法有很多人找不到这个选项,是因为Docker 被WSL2管理,不允许修改)
    • 方法二:打开docker desktop 的 Settings,点击左侧 Docker Engine,修改配置文件,添加 graph 属性(操作很简单,但我不想测试了)

    参考博客:windows10 docker 安装在D盘

5.2.5 Docker + WSL 2使用手册

官方文档:Docker Desktop for Windows 用户手册|Docker 文档

这里给出一点建议

  1. 使用 Docker 和 WSL 2 进行工作或者开发应用程序。建议使用Linux 容器,这样在 Linux 发行版中,也能方便使用 Docker 。
  2. 如何访问 windows containers 中的数据库或者网站呢?用容器ip访问
  3. 如何访问 linux containers 中的数据库或者网站呢?

    如果是宿主机访问容器:用localhost、127.0.0.1、宿主机局域网ip

    如果是局域网中其他客户端访问:用宿主机局域网ip

5.3 两种安装方式总结

  1. WSL2下原生linux安装docker方式和完全linux虚拟机安装docker类似,区别在于WSL2下的linux不支持systemd。
  2. Docker Desktop for windows方式,其实质是利用docker的C/S架构,将windows模式下的docker对应docker.sock,docker客户端二进制和docker的数据目录挂载到WSL2里面的linux机器,在此linux机器下执行docker命令(docker命令为docker客户端),实质为客户端通过挂载的 /var/run/docker.sock 文件与windows里面的dockerd服务端进程通信。如下图,我们在linux下重新启动linux下dockerd进程,linux模式下下载的busybox镜像又可以看到了,/var/run/docker.sock 的时间戳也被更新了,此时客户端通过 /var/run/docker.sock 文件与linux下的dockerd服务端通信。

    WSL2 + Docker + xfce4安装及使用

    WSL2 + Docker + xfce4安装及使用

    Docker for Desktop 里 Windows ContainerLinux Container 两种 docker 容器化运行时,两种运行时不能同时使用,可以切换,切换过程中数据是不会丢失的,你不可以在 windows container 环境下操作 linux container 的镜像与容器,更不能在 linux container 环境下操作 windows container 的镜像和容器,两者架构上不一致。

    要使用哪个模式下的docker,重启下该模式下的docker服务端即可,本质都是修改 /var/run/docker.sock 文件。理论可以同时使用,但是需要修改docker配置,通过 -H 参数增加dockerd的tcp监听,执行具体docker命令时指定dockerd监听的对应IP和端口即可。

    切换操作如下,右键点击图标,可以切换 containers,默认安装完就是 Linux Container ,不推荐使用 Windows containers 。

    WSL2 + Docker + xfce4安装及使用

    有些是因为系统版本不太行,不能选择 Windows containers(下图是本人很早时候安装出现的情况)

    WSL2 + Docker + xfce4安装及使用

    windows terminaldocker ps 命令在windows和ubuntu中查看容器进程,查到的结果是一样的。

最后,就可以在win 10 下使用各种 linux 子系统了, 也可以在 win10 和 linux 下使用 docker 和以及 kubernetes 啦。

5.4 检查 WSL 模式

确保Linux发行版本是运行在WSL 2 模式下。WSL 在V1 和 V2 两种模式下都可以运行

首先在 Windows PowerSell 中,输入:

wsl -l -v 

就可以查看到,多了 docker desktop 的信息。(因为我是安装的Docker Desktop for Windows

PS C:\Users\wys> wsl -l -v NAME STATE VERSION * Ubuntu Running 2 docker-desktop-data Running 2 docker-desktop Running 2 

如果现有的 WSL 是v1,通过下面的命令可以升级为 v2:

wsl --set-version (distro name) 2 

想要把 v2 设置为默认模式,可以通过下面的命令:

wsl --set-default-version 2 

开始使用!

在Windows CMD中,通过命令随便运行几个容器。在Linux中,就可以查看到已经运行的容器信息。

5.5 配置镜像加速器(阿里云)

安装 Docker 软件后,可以直接通过 docker pull 命令拉取镜像。如未配置镜像加速源,直接拉取 DockerHub 中的镜像,通常下载速度会比较慢。这里我将用阿里云镜像加速器。

5.5.1 Docker Desktop for Windows

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Engine。编辑窗口内的JSON串,填写下方加速器地址:

{ "registry-mirrors": ["https://4bj04jx5.mirror.aliyuncs.com"] } 

编辑完成后点击 Apply 保存按钮,等待 Docker 重启并应用配置的镜像加速器。

5.5.2 Docker ce

这里适用于Ubuntu 和 CentOS

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件 /etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://4bj04jx5.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 

参考链接:

配置 Docker 镜像加速源地址

阿里云镜像加速

5.6 可能出现的问题

  • docker for windows could not read CA certificate

    问题原因:之前安装过 docker toolbox

    解决步骤:

    1. 删掉四个docker 的环境变量
    2. 执行cmd命令 docker-machine rm default
    3. 以管理员身份执行cmd命令 @FOR /f “tokens=*” %i IN (‘docker-machine env -u’) DO @%i
  • Filesharing has been cancelled

    安装成功后,可能用到docker-compose,对于新手,这部分可能会遇到麻烦。

    问题原因:当前创建的目录没有加入到文件分享当中,导致操作被取消(如果开启WSL 2就没有这个问题)

    解决步骤:

    1. Docker Desktop -> Settings -> Resources -> File Sharing
    2. 将当前项目目录或项目的父级目录(根目录或上几级)添加进去
    3. Apply & Restart
    4. Docker Desktop -> Restart
  • Ubuntu22.04 Dokcer 安装 mysql8.0 失败,日志如下:mysqld: Cannot change permissions of the file ‘ca.pem’ (OS errno 1 - Operation not permitted)
    root@LAPTOP-LHBT0GVK:/home/dockerdata/mysql8.0# docker logs mysql8.0 2022-10-17 16:24:27+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started. 2022-10-17 16:24:27+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2022-10-17 16:24:27+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started. 2022-10-17 16:24:27+08:00 [Note] [Entrypoint]: Initializing database files mysqld: [Warning] World-writable config file '/etc/my.cnf' is ignored. 2022-10-17T08:24:27.Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.27) initializing of server in progress as process 43 2022-10-17T08:24:27.Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive 2022-10-17T08:24:27.Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2022-10-17T08:24:29.Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted) 2022-10-17T08:24:31.Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem 2022-10-17T08:24:31.Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. 2022-10-17T08:24:31.Z 0 [ERROR] [MY-010119] [Server] Aborting 2022-10-17T08:24:32.Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL. 

    在 WSL2 发行版中创建。/etc/wsl.conf,输入以下内容

    [automount] options = "metadata" 

    保存()并重新启动 WSL

    # 关闭所有的wsl wsl --shutdown # 启动wsl wsl 

    参考:Docker安装MYSQL无法运行的天坑 mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’ (OS errno 13 - Permission den…

六、安装桌面环境(可选)

补充:实在没有必要在WSL 中安装桌面环境和输入法等等,感觉就很另类,而且不实用,别整这些花里胡哨的。我写这个流程,单纯是因为公司需要桌面环境,所以尝试了一下,反正我最后卸载了。

6.1 介绍

WSL 2是为开发人员准备的命令行工具,今天突然在官网发现,WSL 2已经支持原生GUI,但有先决条件。

  • 需要 Windows 11 版本22000或更高 版本才能访问此功能。 可以加入 Windows 预览体验计划,以获取最新的预览版。
  • 安装了 vGPU 的驱动程序

    若要运行 Linux GUI 应用,你应该首先安装与你的系统匹配的预览驱动程序。 这使你能够使用虚拟 GPU (vGPU) 以便你可以从硬件加速 OpenGL 呈现中获益。

这里我的电脑系统比较老,同时不愿意加入预览体验计划(不想踩坑),而且也不愿意加入升级 Windows 11(还是不想踩坑),所以不尝试这种方法。有需要的可以参考博客:WSL 2 GUI 原生支持!

因为桌面环境可以在WSL2内部运行,我们可以使用适用于 Windows 的 X 服务器来侦听 Linux 中的 X11(图形)程序。实现原理是,远程桌面启动监听服务用于监听,WSL启动程序后把界面数据发送给远程桌面软件,远程桌面软件接收到数据进行绘制,于是在Win下看到图形界面。

安装流程总共分为三步

  • 安装远程桌面服务(xrdp,Xming或VcXSrv)
  • 安装X11(图形)程序(xfce4,xubuntu-desktop,ubuntu-desktop)
  • 进行配置设置

以下是我找到的大部分方案:

  • 直接安装 xfce4 ,然后设置 xrdp 远程连接,参考这个B站视频教程。xfce4 是一个轻量级桌面环境,推荐这个。
  • 安装 xubuntu-desktop ,然后设置 xrdp 远程连接,参考这个教程。xubuntu 桌面相当于 xfce4 桌面加上一些小工具。
  • 安装 ubuntu-desktop,使用 X Server,参考:WSL 使用指南——04 安装桌面环境
  • 安装 ubuntu-desktop,并使用 VcXsrv 显示服务器程序显示。参考这个教程
    • 注意这个教程在 WSL2 下 ubuntu18.04LTS 中没有问题。但安装 ubuntu20.04LTS 桌面环境可能会失败。据说是因为 gnome 桌面是基于 systemd,而 WSL 不支持 systemd,所以需要先安装 systemd。操作流程参考流程[[#2.3.4 安装WSL的systemd脚本]]。

6.2 开始

本人安装的WSL 分发版是 Ubuntu 20.04.3 LTS (GNU/Linux 5.4.72-microsoft-standard-WSL2 x86_64) ,准备采用第一种方法xfce4 + xrdp

6.3 源更新与升级依赖

设置国内源,这里省略,可参考流程[[#2.3.3 修改ubuntu的apt安装源]]

sudo apt update sudo apt upgrade 

6.4 安装桌面环境

在 Ubuntu 源仓库有很多桌面环境供你选择。一个选择是安装 Gnome,它是 Ubuntu 20.04 的默认桌面环境。另外一个选项就是安装 xfce。它是快速,稳定,并且轻量的桌面环境,使得它成为远程服务器的理想桌面。

不同的桌面环境,可以参考文章Ubuntu & XFCE vs Xubuntu区别介绍

6.4.1 安装xfce4
sudo apt install xfce4 

安装 xfce4 过程中,会弹框出现选择显示管理DM选择 gdm3lightdm 的提示,建议选择 lightdm

如果错过了安装过程中出现的这个向导,那么可以在安装完成后执行下面的命令重新设置DM

sudo dpkg-reconfigure lightdm 

6.5 为当前用户指定登录session类型

注意这一步很重要,如果不设置的话会导致后面远程桌面连接上闪退

$ vim ~/.xsession # 写入下面内容(就一行) xfce4-session 

或者一步到位

sudo echo xfce4-session > ~/.xsession 

这是告诉系统,开启桌面环境的时候用 xfce4-session

完成后,执行下面这段代码就可以看到桌面的图形界面了。

xfce4-session 

6.6 安装远程桌面服务

补充:如果想连接虚拟机或者双系统里面的Ubuntu,同样可以参考此流程。

Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统。通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样。

6.6.1 安装xrdp

Xrdp 被包含在默认的 Ubuntu 软件源中。想要安装它,运行:

sudo apt-get install xrdp 

一旦安装完成,Xrdp 服务将会自动启动。你可以输入下面的命令,验证它:

sudo systemctl status xrdp 

如果提示找不到该命令,那是没有安装 systemd 命令。参考[[#2.3.4 安装WSL的systemd命令]]

输出将会像下面这样:

● xrdp.service - xrdp daemon Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-11-02 17:36:16 UTC; 2min 27s ago ... 

默认情况下,Xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对“ssl-cert” 用户组成语可读。运行下面的命令,将xrdp用户添加到这个用户组:

sudo adduser xrdp ssl-cert 

重启 Xrdp 服务,使得修改生效:

sudo systemctl restart xrdp 

就这样。Xrdp 已经在你的 Ubuntu 服务器上安装好了,你可以开始使用它了。

6.6.2 修改xrdp配置

Xrdp 配置文件定位在/etc/xrdp目录。对于基本的 Xrdp 连接,你不需要对配置文件做任何改动。

主要的配置文件被命名为 xrdp.ini。这个文件被分成不同的段,允许你设置全局配置,例如安全,监听地址,创建不同的 xrdp 登录会话等。

修改默认端口

由于 xrdp 安装好后,默认配置使用的是和Windows远程桌面相同的 3389 端口,为了防止和Windows系统远程桌面冲突,建议修改成其他的端口。(虚拟机和双系统可忽略

$ sudo vim /etc/xrdp/xrdp.ini # 修改下面这一行,将默认的3389改成其他端口即可 port=3390 

或者

sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini 

修改图像设置(可选)

sudo vim /etc/xrdp/xrdp.ini 

max_bpp=32 修改为128(最大位图深度)

#xserverbpp=24 修改为128,取消注释‘#’。

设置连接会话进程是否保留

sudo vim /etc/xrdp/sesman.ini 

KillDisconnected的值修改为 true,保存退出。这样每次断开连接时,linux都会关闭会话进程,连接数量达到上限,出现问题。

设置 Xrdp 连接的桌面环境

Xrdp 使用默认的 X Window 桌面环境(Gnome or XFCE)。Xrdp 使用 startwm.sh 文件启动 X 会话。如果你想使用另外一个 X Window 桌面,编辑这个文件。

sudo vim /etc/xrdp/startwm.sh 

用#注释末尾两行test和exec:

test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession 

添加一行

startxfce4 # 如果你是装的虚拟机或者双系统Ubuntu桌面版(即桌面环境默认是ubuntu-desktop,Unity桌面),则这里就添加gnome-session 

不管什么时候你对配置文件做出修改,你需要重启 Xrdp 服务。

6.6.3 重启一下电脑

本人测试发现,这里需要重启电脑主机,不然可能报错,重启后再启动xrdp。大家可以先跳过这步试试,不行再重启电脑。

6.6.4 启动xrdp

由于WSL2里面没有 systemd ,所以需要手动启动

sudo /etc/init.d/xrdp start 

或者可以安装 systemd ,参考步骤[[#2.3.4 安装WSL的systemd脚本]]

sudo service xrdp restart 
6.6.5 查看IP地址
ip a 

eth0 项中,inet 后面的地址记下来。

6.7 远程连接

按下 windows + R 键,输入 mstsc 打开远程桌面连接

在计算机(Computer)栏输入刚才记下的ip地址及端口3390,或者地址输入localhost:3390,注意这里的端口号应当与上面修改配置中一致。用户名可填可不填,因为之后会提示填写,或者输入 WSL 2 中使用的账号密码

WSL2 + Docker + xfce4安装及使用

如果连接不上,可以用 telnet 命令测试端口是否开启。如果连接不通,检查 Xrdp 是否启动,同时是否有防火墙设置。

6.7.1 配置防火墙

Xrdp 守护程序在所有的网络接口上默认监听端口3389。如果你在你的 Ubuntu 服务器上运行一个防火墙,你需要打开 Xrdp 端口。

想要允许从某一个指定的 IP 地址或者 IP 范围访问 Xrdp 服务器,例如192.168.33.0/24,你需要运行下面的命令:

sudo ufw allow from 192.168.33.0/24 to any port 3389 

如果你想允许从任何地方访问(由于安全原因,这种方式不鼓励),运行:

sudo ufw allow 3389 

想要增加安全,你可以考虑 Xrdp 仅仅监听 localhost,并且创建一个 SSH 隧道,将本地机器的3389端口到远程服务器的同样端口之间的流量加密。

6.8 设置中文以及安装输入法(坑)

本人尝试各种方法,均测试失败,所以下面流程可以跳过。如果有人成功了,麻烦在评论区踢我一脚

6.8.1安装中文语言包

方法一:

sudo dpkg-reconfigure locales 

然后一直按键盘上的 ↓ 找到 zh_CN UTF-8,然后按空格勾选,再tab切换到ok上回车,接下来的界面选 zh 再回车。
这一步完成后可能会导致键盘不可用,不用激动,点击桌面左上角图标注销后重进就好了。

首次进入中文界面会提示是否重命名那几个文件夹,建议保持英文状态,因为有些路径是写进配置文件了的,重命名会带来不必要的麻烦。

方法二:

sudo apt install language-pack-zh-hans 
6.8.2 修改默认语言环境为中文

设置本地化环境变量

echo "LANG=zh_CN.UTF-8" >> ~/.profile 

或者通过 locale-gen

sudo locale-gen zh_CN.UTF-8 
6.8.3 安装完整的语言支持

打开Applications->Settings->Language Support,按提示安装包就可以。或者执行命令

sudo /usr/bin/gnome-language-selector 

如果出现闪退,可以在终端中来启动,发现错误:Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

WSL2 + Docker + xfce4安装及使用

解决办法:

sudo apt-get install dbus sudo /etc/init.d/dbus start 

再次打开语言支持,开始安装

WSL2 + Docker + xfce4安装及使用

在 system settings->language support->install/remove languages,在弹出的菜单中选择Chinese(simplified),点击apply

WSL2 + Docker + xfce4安装及使用

为了避免每次重启都得手动运行 dbus,可以在应用程序 - 设置 - 会话与启动 - 应用程序自启动,添加 /etc/init.d/dbus start

6.8.4 安装中文输入法

任选一种

安装中文输入法fcitx-pinyin

参考链接:安装中文输入法

sudo apt install fcitx fcitx-pinyin echo -e "export XMODIFIERS=@im=fcitx\nexport GTK_IM_MODULE=fcitx\nexport QT_IM_MODULE=fcitx\n" >> ~/.profile 

软件包已装,在应用程序 - 设置 - 会话与启动 - 应用程序自启动,添加 /usr/bin/fcitx

打开系统自带的 Input Method Configuration,直接点击OK、Yes,然后将默认的 ibus 切换为 fcitx,一路OK

WSL2 + Docker + xfce4安装及使用

搜狗输入法是建立在fcitx框架之上的,所以要将输入法框架选择为fictx,

安装搜狗输入法

官方安装指南

6.9 可能出现的问题

6.9.1 xrdp远程桌面黑屏处理
sudo vim /etc/xrdp/startwm.sh 在上面文件中添加 unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR 

添加位置如下图:

WSL2 + Docker + xfce4安装及使用

重启 xrdp

sudo service xrdp restart #没效果就用下面的命令: sudo /etc/init.d/xrdp restart 
6.9.2 进入图形界面一段时间后黑屏

进入图形界面,点击右上角Applications—>Settings—>Light Locker Settings。

设置 Automatically lock the session 为 Never。

WSL2 + Docker + xfce4安装及使用

WSL2 + Docker + xfce4安装及使用

6.9.3 运行一段时间后,出现xrdp_mm_process_login_response: login failed

问题原因:远程桌面没有正确关闭,虽然在windows 系统关闭远程桌面连接,但是在里linux上的进程还在运行,导致连接数量达到上限,出现问题。

解决:通过设置 sesman.in 文件内的参数,解决。

vim /etc/xrdp/sesman.ini 

然后重启/etc/init.d/xrdp restart 就可解决问题

6.10 安装软件

再次提醒先设置好 apt 源,可以手动修改文件,或者从图形界面的设置中进行设置

6.11 安装Chrome

可以直接从软件市场中下载

这种比较方便

命令行安装

  1. 为Google Chrome浏览器创建源列表文件
    sudo vim /etc/apt/sources.list.d/google-chrome.list 
  2. 添加源
    deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main 
  3. 运行以下命令以下载Google的签名密钥
    wget https://dl.google.com/linux/linux_signing_key.pub 
  4. 使用apt-key将其添加到密钥环中,以便包管理器可以验证Google Chrome deb包的完整性
    sudo apt-key add linux_signing_key.pub 
  5. 更新包列表并安装稳定版Google Chrome
    sudo apt update sudo apt install google-chrome-stable 
  6. 从命令行启动Chrome浏览器
    google-chrome-stable 如果提示Running as root without --no-sandbox is not supported. 这是因为当前是root用户下安装的,所以无法打开,而非root用户上启动下,肯定能启动起来。 可以在启动命令后增加“–no-sandbox” /usr/bin/google-chrome-stable –no-sandbox 如果不想一直使用命令启动,可以在 /usr/share/applications中找到Chrome的快捷方式,然后右键在其properties中command中增加”–no-sandbox”即可。从此以后,就可以直接在Search中找到Chrome进行启动了,或者将快捷方法发送到桌面来启动。 

七、WSl 命令参考

命令行官方文档:https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands

以下基本的 WSL 命令以 PowerShell 或 Windows 命令提示符支持的格式列出。 若要通过 Bash/Linux 发行版命令行运行这些命令,必须将 wsl 替换为 wsl.exe

  • 列出已安装的 Linux 发行版
    wsl --list --verbose 或者 wsl -l -v 其他选项包括: --all(列出所有发行版) --running(仅列出当前正在运行的发行版) --quite(仅显示发行版名称)。 
  • 列出可用的 Linux 发行版

    查看可通过在线商店获得的 Linux 发行版列表。

    wsl --list --online 或者 wsl -l -o 
  • 设置默认 WSL 版本
    wsl --set-default-version 
         
        

    若要将默认版本设置为 WSL 1 或 WSL 2,请将
    替换为数字 1 或 2,表示对于安装新的 Linux 发行版,你希望默认使用哪个版本的 WSL。 例如,wsl --set-default-version 2

  • 设置 WSL 版本
    wsl --set-version 
         
          
          
        

    若要指定运行 Linux 发行版的 WSL 版本(1 或 2),请将
    替换为发行版的名称,并将
    替换为 1 或 2。

  • 设置默认 Linux 发行版
    wsl --set-default 
        
          或者 wsl 
         -s 
          
          
        

    若要设置 WSL 命令将用于运行的默认 Linux 发行版,请将
    替换为你首选的 Linux 发行版的名称。

  • 通过 PowerShell 或 CMD 运行特定的 Linux 发行版
    wsl --distribution 
         
         --user 
          
          
        

    若要通过特定用户运行特定 Linux 发行版,请将
    替换为你首选的 Linux 发行版的名称(例如 Debian),将
    替换为现有用户的名称(例如 root)。 如果 WSL 发行版中不存在该用户,你将会收到一个错误。 若要输出当前用户名,请使用 whoami 命令。

  • 更新 WSL
    wsl --update 

    手动更新 WSL Linux 内核的版本。 还可以使用 wsl --update rollback 命令回滚到 WSL Linux 内核的上一版本。

  • 检查 WSL 状态
    wsl --status 

    查看有关 WSL 配置的常规信息,例如默认发行版类型、默认发行版和内核版本。

  • Help 命令
    wsl --help 

    查看 WSL 中可用的选项和命令列表。

  • 主目录
    wsl ~ 

    ~ 可与 wsl 一起使用,以在用户的主目录中启动。 若要在 WSL 命令提示符中从任何目录跳回到主目录,可使用命令 cd ~

  • 关闭
    wsl --shutdown 

    立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。 在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。

  • Terminate
    wsl --terminate 
         
        

    若要终止指定的发行版或阻止其运行,请将
    替换为目标发行版的名称。

  • 注销或卸载 Linux 发行版
    wsl --unregister 
         
        

    通过将
    替换为目标发行版的名称,注销或卸载特定发行版。 这会从 WSL 中删除此发行版,并删除所有关联的数据、设置和软件。 还可以像卸载任何其他应用商店应用程序一样卸载 Windows 计算机上的 Linux 发行版应用。

参考链接

【WSL+Docker】新手Win10下的WSL Ubuntu18并使用Docker(两种方式)

WSL(Ubuntu20.04)与其图形界面安装配置

用于 WSL 2 上的 Ubuntu 的 Xfce4 桌面环境和 X 服务器

文章更新日志

  • 2022-10-19 补充安装Ubuntu22.04版本遇到的问题
  • 2022-03-03 为每个软件环境安装,增加自定义方案。优化文章结构,更新软件版本变动
  • 2021-05-08 编写文章
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218346.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午7:28
下一篇 2026年3月18日 上午7:28


相关推荐

  • docker重新部署项目_docker一键部署

    docker重新部署项目_docker一键部署Docker为什么出现?阿里云镜像加速、HelloWorld流程底层原理、部署项目1、安装docker2、安装Docker-Compose3、编写相关配置文件Docker-Compose.yml编写Dockerfile编写Nginx的配置4、打包前端后端Docker简介Docker为什么出现?一款产品:开发–上线两套环境!应用环境,应用配置!开发—运维。问题:我在我的电脑上可以运行!版本更新,导致服务不可用

    2022年10月18日
    3
  • docker-compose 集群_docker集群管理

    docker-compose 集群_docker集群管理前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

    2022年7月30日
    11
  • docker搭建kafka集群[通俗易懂]

    docker搭建kafka集群[通俗易懂]docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

    2022年4月25日
    50
  • docker(2)CentOS 7安装docker环境「建议收藏」

    docker(2)CentOS 7安装docker环境「建议收藏」前言前面一篇学了mac安装docker,这篇来学习在linux上安装docker环境准备Docker支持以下的CentOS版本,目前,CentOS仅发行版本中的内核支持Docker。Doc

    2022年7月28日
    9
  • docker 离线安装及命令整理[通俗易懂]

    docker 离线安装及命令整理[通俗易懂]1、保存镜像<fontface=’微软雅黑’size=3>将我们的镜像保存为tar压缩文件这样方便镜像转移和保存,然后可以在任何一台安装了docker的服务器上加载这个镜像。(主要考虑到liunx离线部署问题)</font>dockersave镜像名/镜像ID-o镜像保存在哪个位置与名字示例dockersaveoffline-map-o/offlinemap.tar2、加载镜像任何装docker的地方加载镜像保存文件,使其恢复为一

    2026年4月13日
    4
  • Docker安装配置教程[通俗易懂]

    Docker安装配置教程[通俗易懂]之前docker很久就写了笔记了。后面因为家里有事,耽搁了一年。现在把这部分笔记重新上传一下。大家看看。Docker要求:lunix内核,要求3.8以上centos7Docker是一个进程,一启动就两个进程,一个服务,一个守护进程。占用资源就非常少,启动速度非常快,1s。一台机器上vm,3到10个实例。docker100到10000。1.核心概念:1)镜像images,事先做好一…

    2022年10月10日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号