WSL2/Docker/Miniconda:深度学习LLM环境配置指南

[Windows] WSL2 + Docker + Miniconda:深度学习LLM环境配置指南

在 Windows 环境下进行深度学习研究,利用 WSL2(Windows Subsystem for Linux 2)、DockerMiniconda ,构建近 Linux 原生体验同时兼顾 Windows 生态的开发环境。

0. 前置准备

建议安装以下工具以提升开发调试效率:

  • Windows Terminal:多标签页支持,同时使用 WSL 和 PowerShell 。
  • Visual Studio Code:配合 WSL 扩展插件,实现跨平台开发。
  • Git:版本管理及开源项目克隆必备。

1. 环境准备与系统功能配置

WSL2 是在 Windows 上运行 Linux 子系统的最佳实践。相比旧版本,它拥有完整的 Linux 内核,支持原生的 GPU 调用。WSL2 依赖于 Windows 的底层 Hypervisor 虚拟化技术。这可能会导致部分依赖硬件虚拟化的第三方安卓模拟器(如早期版本的雷电、夜神)性能下降或无法运行。

1.1 开启虚拟化功能

方案 A:图形化界面(推荐初学者)

  1. 打开 控制面板 > 程序 > 启用或关闭 Windows 功能

  2. 勾选以下项:

    • 虚拟机平台 (Virtual Machine Platform)
    • 适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
  3. 注意:若仅使用 WSL2,通常无需勾选完整的 “Hyper-V” 组件(特别是 Windows 家庭版用户)。

方案 B:命令行操作

使用管理员权限打开 PowerShell 或 CMD:

# 开启 WSL 核心功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 开启虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

操作完成后必须重启电脑以应用更改。

2. WSL2 内核安装

2.1 内核更新

旧版安装方法(更可靠稳定)

旧版安装方法参考:旧版 WSL 的手动安装步骤 | Microsoft Learn

  1. 启用Windows可选功能

    可以使用控制面板​开启相应功能

    image

    1. 适用于 Linux 的 Windows 子系统

      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    2. 虚拟机功能

      dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    3. 不需要开启“Hyper-V”

  2. 重启电脑

  3. 安装Linux内核更新包

    适用于 x64 计算机的 WSL2 Linux 内核更新包

  4. 设置WSL 2为默认版本

    wsl --set-default-version 2
  5. (Microsoft Store)安装发行版并初始化配置

常见问题

初始化过程中无法启动:Installing, this may take a few minutes… WslRegisterDistribution failed with error: 0x800701bc Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

重新安装Linux内核更新包

新版安装方法

安装 WSL | Microsoft Learn

wsl --install

2.2 初始化配置

参考 设置 WSL 开发环境 | Microsoft Learn 细粒度配置

第一次安装后,需要创建“用户名”和“密码”:用户名密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关

配置 Cuda 运行环境

WSL中使用Nvidia,已不需要在WSL重复安装Nvidia驱动!WSL2 与 Windows 共用同一套显卡驱动,重复安装会造成内核模块冲突。(本质上WSL强行将Windows环境变量全部引入了WSL,直接和Linux环境变量拼在一起)

From this point you should be able to run any existing Linux application which requires CUDA. ​ Do not install any driver within the WSL environment. ​*​ For building a CUDA application, you will need CUDA Toolkit. Read the next section for further information.*
—— Reference : CUDA on WSL (nvidia.com)

配置Cuda Toolkit编译环境

安装Nvidia驱动后,即可运行大部分程序,如需进行编译(需要使用nvcc),才需要安装Toolkit

CUDA Toolkit Downloads | NVIDIA Developer

2.3 虚拟磁盘迁移与压缩

WSL2 默认将磁盘映像(ext4.vhdx)存储在 C 盘。随着环境增加,C 盘空间会迅速耗尽。

3.1 虚拟磁盘迁移(高风险操作)

[!WARNING]
风险警告:迁移操作涉及底层磁盘挂载,执行前请务必使用 wsl --export 备份重要数据。

  1. 确定路径:定位 .vhdx 文件位置,默认路径为:

    %LOCALAPPDATA%\Packages\<linux_release_version>\LocalState\ext4.vhdx
    C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
  2. 迁移工具:推荐使用 Move WSL 脚本进行自动化迁移,运行 move-wsl.ps1

3.2 磁盘瘦身

即使 WSL 中删除文件,Windows 下的 .vhdx 文件也不会自动减小。需手动压缩:

# 1. 停止所有 WSL 实例
wsl --shutdown

# 2. 进入磁盘管理工具
diskpart

# 3. 选择虚拟磁盘(请替换为实际路径)
# select vdisk file="<PATH_TO_VHDX>"
select vdisk file="D:\WSL\Ubuntu\ext4.vhdx"

# 4. 执行压缩操作
attach vdisk readonly
compact vdisk
detach vdisk

3. Docker Desktop 安装及配置

3.1 基础配置

新建 %UserProfile%/.wslconfig ​全局配置文件,配置资源限制。

[wsl2]
memory=4GB
processors=2
swap=0
localhostForwarding=true

3.2 迁移Docker虚拟磁盘位置(WSL2环境下)

默认的磁盘放置在%UserProfile%/AppData/Local/Docker/wsl​下,较为影响C盘使用

3.2.1 修改Docker Desktop设置

Settings -> Resources -> Disk Image Location

修改确认后,会自动创建DockerDesktopWSL​文件夹,并迁移所有磁盘

3.2.2 使用WSL磁盘迁移方案

参考:迁移WSL磁盘

4. Miniconda 环境配置

本文在 Windows下使用 Miniconda,并将环境统一安装在 D:\ProgramFiles\miniconda3,可根据自身需求调整。

4.1 Miniconda 安装

Miniconda 是最小的 conda 安装环境,相较于 Anaconda 去除了科学计算常用库,仅保留核心的 conda + python + pip,轻量更易用。

curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o .\miniconda.exe
start /wait "" .\miniconda.exe /S
del .\miniconda.exe
下载地址: MiniConda官方手册 国内:清华源下载

4.2 环境变量配置

采用 CONDA_HOME 的方式进行组织,方便统一引用。

手工配置

CONDA_PATH = D:\ProgramFiles\miniconda3

# Path 变量新增:
%CONDA_PATH%
%CONDA_PATH%\Scripts
%CONDA_PATH%\Library\bin

命令行添加(管理员权限 PowerShell)

# 定义变量
$condaPath = "D:\ProgramFiles\miniconda3"
# 添加 CONDA_HOME
[Environment]::SetEnvironmentVariable("CONDA_HOME", $condaPath, "Machine")
# 更新 Path
$oldPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPath = "$oldPath;$condaPath;$condaPath\Scripts;$condaPath\Library\bin"
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")

4.2 核心初始化步骤

安装完成后,必须初始化 Shell 脚本才能正常切换环境:

# 直接初始化全部命令行环境,或添加 --dry-run 选项查看所有操作但不执行
conda init --all --dry-run
conda init --all
# 也可单独初始化
conda init powershell
conda init cmd.exe

此处PowerShell 重启后可能遇到问题:

系统上禁止运行脚本:提示:https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。(官方参考:关于执行策略 - PowerShell | Microsoft Learn

系统执行策略限制了 Conda 的自动激活脚本,管理员权限运行PowerShell【允许本地脚本和远程签名脚本

set-ExecutionPolicy RemoteSigned
# 选择Y(推荐)或A 
# 通过以下命令查看设置结果
# get-executionpolicy

4.3 Miniconda 环境配置

# 在用户目录下自动生成 .condarc 文件(Windows手动创建无效)
conda config --set show_channel_urls yes
# %USERPROFILE%/.condarc
pkgs_dirs:
  - D:\ProgramFiles\miniconda3\pkgs
envs_dirs:
  - D:\ProgramFiles\miniconda3\envs
channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud/

如已有索引缓存,先运行命令重置索引

conda clean -i

为确保目录可用,务必修改envs​和pkgs​文件夹的权限,否则仍会导致C盘大量占用!

image

5. Docker 容器化验证

在 WSL2 模式下,Docker 可以直接调用宿主机的显卡资源。

5.1 部署 Ollama 后端

通过挂载外部路径,保证模型数据持久化在 D 盘:

docker run -d --gpus=all \
  -v D:\ProgramFiles\AI\ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama ollama/ollama

5.2 部署 Open-WebUI 前端

docker run -d -p 3000:8080 --gpus all \
  --add-host=host.docker.internal:host-gateway \
  -v D:\ProgramFiles\AI\ollama-open-webui:/app/backend/data \
  --name ollama-open-webui --restart always ghcr.io/open-webui/open-webui:cuda

6. 总结

本指南通过对 Windows 底层虚拟化功能的调整,结合 WSL2 的驱动透传机制,构建了一个具备 GPU 加速能力的 AI 开发环境。


WSL2/Docker/Miniconda:深度学习LLM环境配置指南
http://blog.zhens.site/env-python-miniconda/
作者
zhens
发布于
2026年2月15日
许可协议