码耕记

WSL 完整使用手册

2026/07/23
3
0

第一部分:WSL 核心概念

1.1 WSL 是什么?

项目说明
全称Windows Subsystem for Linux
本质在 Windows 上原生运行 Linux 环境的技术,无需安装传统虚拟机
两大版本WSL 1:系统调用翻译层(轻量,跨 OS 文件访问快) WSL 2:轻量虚拟机 + 完整 Linux 内核(主流推荐,支持 Docker)

1.2 核心术语

术语含义
发行版 (Distro)每个独立的 Linux 系统实例,如 Ubuntu-24.04、Debian 等。发行版之间完全隔离,互不干扰
默认发行版直接敲 wsl 命令时进入的那个发行版(列表里带 * 号)
虚拟硬盘 (.vhdx)每个发行版的实际存储文件,包含整个 Linux 根文件系统。默认位于 C 盘 AppData\Local\Packages\...\LocalState\
WSL 2基于 Hyper-V 的轻量虚拟机,提供完整 Linux 内核,兼容性极佳,Docker 必须运行在 WSL 2 上
WSL 1通过翻译 Linux 系统调用来工作,无需虚拟化。访问 Windows 文件(/mnt/c/)速度比 WSL 2 快,但部分功能受限

第二部分:日常使用命令速查

① 查看信息

命令作用
wsl -l -v查看所有发行版及状态(最常用)
wsl --status查看 WSL 全局状态(默认版本、内核等)
wsl --version查看 WSL 组件版本
wsl -d <发行版> -e uname -a查看指定发行版的内核信息

② 启动与进入

命令作用
wsl进入默认发行版
wsl -d <发行版名>进入指定发行版
wsl --start <发行版名>后台启动发行版(不进入终端)

③ 停止与关闭

命令作用
wsl -t <发行版名>停止指定的发行版
wsl --shutdown停止所有发行版(卡顿/配置修改后首选)

④ 设置与管理

命令作用
wsl --set-default <发行版名>设置默认发行版
wsl --set-version <发行版名> <1/2>切换 WSL 版本(1 或 2)
wsl --update更新 WSL 内核组件
wsl --unregister <发行版名>删除/注销发行版(⚠️ 数据会丢失)

⑤ WSL 内部互操作命令(在 WSL 终端内执行)

命令作用
explorer.exe .在 Windows 文件资源管理器打开当前目录
code .用 VS Code 打开当前目录
notepad.exe 文件名用 Windows 记事本编辑文件
wslpath "C:\Users\..."Windows 路径 → WSL 路径
wslpath -w /home/用户名WSL 路径 → Windows 路径
/mnt/c/WSL 内访问 Windows C 盘的挂载点

第三部分:配置文件 .wslconfig

文件位置

C:\Users\你的用户名\.wslconfig

示例配置

[wsl2]
memory=4GB                # 限制总内存
processors=2              # 限制 CPU 核心数
swap=2GB                  # 交换分区大小
localhostForwarding=true  # 端口转发(用于 localhost 访问)
nestedVirtualization=true # 嵌套虚拟化(用于在 WSL 内运行虚拟机)
dnsTunneling=true         # DNS 隧道

⚙️ 生效方法

wsl --shutdown   # 关闭所有 WSL 后重新启动生效

第四部分:备份与迁移

4.1 快速迁移法:--move(推荐,WSL 2.7+ 支持)

# 0.查看版本
wsl --version
WSL 版本: 2.7.10.0
内核版本: 6.18.33.2-2
WSLg 版本: 1.0.73.2
MSRDC 版本: 1.2.6676
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.26100.4946


# 1. 关闭所有 WSL
wsl --shutdown

# 2. 创建目标目录
mkdir D:\WSL

# 3. 执行迁移
wsl --move Ubuntu-24.04 D:\WSL\Ubuntu-24.04

# 4. 验证
wsl -l -v
wsl -d Ubuntu-24.04

优点:一条命令完成,默认用户保留,速度快


4.2 通用迁移法:export + import(适用于所有版本)

流程图

导出 (export) → 注销 (unregister) → 导入 (import)
     ↓                ↓                    ↓
 生成 .tar         删除原系统          在新位置重建
  备份文件         释放 C 盘空间        (保留数据)

完整命令

# 1. 导出备份
wsl --export Ubuntu-24.04 D:\Ubuntu-backup.tar

# 2. 注销原系统(释放 C 盘空间)
wsl --unregister Ubuntu-24.04

# 3. 创建目标目录并导入
mkdir D:\WSL\Ubuntu-24.04
wsl --import Ubuntu-24.04 D:\WSL\Ubuntu-24.04 D:\Ubuntu-backup.tar --version 2

# 4. ⚠️ 恢复默认用户(import 后默认用户是 root)
Ubuntu-24.04 config --default-user 你的用户名

# 5. 验证并清理备份文件
wsl -l -v
del D:\Ubuntu-backup.tar

4.3 两种迁移方式对比

对比项--moveexport/import
操作步骤1 条命令3 步
需要备份文件❌ 不需要✅ 需要
默认用户保留✅ 自动保留❌ 需手动恢复
速度较慢
适用版本新版 WSL(2.7+)所有版本
推荐度⭐⭐⭐⭐⭐⭐⭐⭐

第五部分:Docker 与 WSL 的关系

5.1 Docker Desktop 的架构

text

┌────────────────────────────────────────────────────────────────┐
│                      Docker Desktop                           │
├────────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌────────────────────┐    ┌─────────────────────────────┐   │
│  │  docker-desktop    │    │  docker-desktop-data        │   │
│  │  (Docker 引擎)     │    │  (镜像/容器/卷数据)         │   │
│  │  运行 dockerd      │    │  存储所有 Docker 数据       │   │
│  └────────┬───────────┘    └──────────────┬──────────────┘   │
│           │                               │                   │
│           └───────────────┬───────────────┘                   │
│                           │                                   │
│                 ┌─────────▼─────────┐                         │
│                 │  Ubuntu-24.04     │  ◄── WSL Integration   │
│                 │  (你的工作环境)   │      让 Ubuntu 内能     │
│                 │  敲 docker 命令   │      调用 Docker 引擎   │
│                 └───────────────────┘                         │
│                                                               │
└────────────────────────────────────────────────────────────────┘

5.2 两个 Docker 专属发行版

发行版名称核心作用能否删除
docker-desktop运行 Docker 引擎 (dockerd),负责容器生命周期绝对不能
docker-desktop-data存储所有 Docker 数据(镜像、容器、卷)⚠️ 删了就丢数据

5.3 Docker Desktop 设置:WSL Integration

作用:让指定的 WSL 发行版能直接使用 Docker 命令。

在 Docker Desktop 设置中:

  • Enable integration with my default WSL distro:勾选后,默认发行版(你的 Ubuntu-24.04)可以使用 Docker
  • Enable integration with additional distros:额外勾选其他发行版

工作原理
你在 Ubuntu 终端敲的 docker ps 命令,通过网络通信发给 docker-desktop 里的 Docker 引擎执行。

5.4 Docker 相关空间占用与释放

存储位置内容释放方法
docker-desktop-data镜像、容器、卷docker system prune -a --volumes
docker-desktop引擎本身不需要动
Ubuntu 内的 /var/lib/docker如果直接用 Docker 引擎(非 Desktop)同上

5.5 常见 Docker + WSL 操作场景

场景操作
停止 Docker(释放内存)右键系统托盘 Docker 图标 → Quit Docker Desktop
Docker 无法启动执行 wsl --shutdown 后重启 Docker Desktop
在 Ubuntu 里运行 Docker确保 WSL Integration 已开启,直接敲 docker 命令
清理 Docker 数据释放空间在 Ubuntu 里执行 docker system prune -a --volumes
迁移 Docker 数据到 D 盘wsl --move docker-desktop-data D:\WSL\docker-desktop-data

第六部分:你的当前环境状态

text

PS C:\Users\ASUS> wsl -l -v
  NAME              STATE           VERSION
* Ubuntu-24.04      Running         2       ← 默认,日常工作环境
  docker-desktop    Running         2       ← Docker 引擎(不要动)
  Ubuntu            Stopped         2       ← 旧版,可清理

WSL 版本: 2.7.10.0  ✅ 支持 --move 命令

第七部分:常见问题速答

问题答案
WSL 默认装在哪里?C 盘 AppData\Local\Packages\...\LocalState\ext4.vhdx
能搬到其他盘吗?,用 wsl --move(推荐)或 export/import
删了文件 C 盘没变小?vhdx 文件不会自动缩小,需迁移到新盘重建
能直接删 docker-desktop 吗?不能,会破坏 Docker Desktop
旧 Ubuntu 能删吗?✅ 能,确认无数据后用 wsl --unregister Ubuntu
WSL 卡顿怎么办?wsl --shutdown 重启所有发行版
怎么限制 WSL 内存?编辑 C:\Users\ASUS\.wslconfig,设 memory=4GB
迁移后默认用户是 root?<发行版名> config --default-user 用户名 改回
如何快速打开 WSL 文件位置?进入 WSL 后执行 explorer.exe .

第八部分:避坑小贴士

问题解决方案
访问 /mnt/c/ 文件很慢把文件复制到 WSL 内部(如 /home/)再操作
磁盘空间被 Docker 吃光docker system prune -a --volumes
导入后显示 The path is already in use目标文件夹不能存在,删除或换一个路径
--move 报错 "in use"先执行 wsl --shutdown
不同发行版之间文件怎么共享?通过 /mnt/ 或 Windows 资源管理器(explorer.exe .