我把Windows WSL 2+Docker GPU加速的操作拆成3步详细步骤,跟着做就行:
步骤1:配置WSL 2+带GPU的Linux发行版
- 打开Windows「设置」→「应用」→「可选功能」→「更多Windows功能」,勾选「适用于Linux的Windows子系统」「虚拟机平台」,重启电脑;
- 打开微软应用商店,搜索"Ubuntu"(选20.04/22.04版本)并安装;
- 打开终端,执行
wsl --set-default-version 2,再执行wsl --set-version Ubuntu 2(把Ubuntu设为WSL 2后端)。
步骤2:安装支持WSL 2的NVIDIA驱动
- 打开NVIDIA官网,下载「适用于WSL的NVIDIA Windows驱动程序」(不是普通驱动):
(官网地址:https://www.nvidia.com/zh-cn/geforce/drivers/wsl) - 直接安装驱动(全程默认下一步),安装完成后重启电脑。
步骤3:配置Docker Engine开启GPU支持
- 打开Docker Desktop,点击右上角「设置」→「Docker Engine」;
- 在配置文件中添加
"gpu": true(注意JSON格式,逗号分隔),示例:
yaml
{
"experimental": true,
"features": {
"buildkit": true,
"gpu": true # 新增这一行
},
"registry-mirrors": ["https://registry.docker-cn.com"]
}
- 点击「应用并重启」,等待Docker重启完成。
验证是否成功
打开WSL的Ubuntu终端,执行docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi,如果能显示GPU信息,说明配置成功。
要不要我帮你整理一份验证GPU加速是否生效的常用命令清单?
如果NVIDIA官网"适用于WSL的驱动"页面打不开,可以换这2种方式获取驱动:
方式1:通过NVIDIA GeForce Experience安装
- 安装/打开「GeForce Experience」(官网:https://www.nvidia.com/zh-cn/geforce/geforce-experience/);
- 点击「驱动程序」→「检查更新」,它会自动检测并推荐支持WSL 2的最新驱动(不需要手动选"WSL专用",新版驱动默认包含WSL支持)。
方式2:直接用系统自带的驱动更新
- 右键点击Windows开始菜单→「设备管理器」;
- 展开「显示适配器」,右键点击你的NVIDIA显卡→「更新驱动程序」;
- 选择「自动搜索驱动程序」,系统会下载并安装兼容的最新驱动(需确保系统是Win11 22H2及以上/Win10 21H2及以上,这些版本的驱动默认支持WSL 2)。
验证驱动是否支持WSL:安装后打开WSL终端,执行nvidia-smi(不需要装任何包),如果能显示GPU信息,说明驱动已透传成功。
要不要我帮你确认你的Windows版本是否支持WSL 2 GPU加速?
对于自己电脑环境是cuda12.9, 可以在docker安装这个版本的pytorch:
bash
# 基础镜像:CUDA 12.9 + Python 3.9(适配CUDA 12.9)
FROM nvidia/cuda:12.9.0-cudnn-devel-ubuntu22.04
# 核心环境变量:仅保留必要配置,放弃源替换避免冲突
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV PATH="/root/.local/bin:${PATH}"
# pip 国内源(仅保留pip加速,apt用官方源)
ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
ENV PIP_TRUSTED_HOST=mirrors.aliyun.com
ENV PIP_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cu121
# 不替换apt源,仅清理缓存+更新(用官方源,牺牲速度换稳定性)
RUN apt-get clean && apt-get update -y
# 1. 添加deadsnakes源(用于安装Python 3.9)
RUN apt-get clean && apt-get update -y && \
apt-get install -y --no-install-recommends \
software-properties-common \
apt-transport-https \
ca-certificates \
&& add-apt-repository -y ppa:deadsnakes/ppa && \
apt-get update -y
# 2. 安装Python 3.9全套依赖(从deadsnakes源)
RUN apt-get install -y --no-install-recommends \
git \
wget \
python3.9 \
python3.9-dev \
python3.9-distutils \
python3.9-venv \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
&& rm -rf /var/lib/apt/lists/*
# 设置Python 3.9为默认
RUN ln -sf /usr/bin/python3.9 /usr/bin/python && \
ln -sf /usr/bin/python3.9 /usr/bin/python3
# 安装pip(用国内源)
RUN wget https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py --no-cache-dir && \
rm get-pip.py && \
pip install --upgrade pip
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt && \
pip install --no-cache-dir torch==2.3.1 torchvision==0.18.1
# 复制项目代码
COPY . /app
EXPOSE 8888
CMD ["bash"]
bash
wsl --list --verbose
# 格式:wsl --set-default <发行版名称>
wsl --set-default Debian # 示例:将默认改为 Debian
# 或
wsl --set-default Ubuntu-22.04 # 若想默认进入 Ubuntu-22.04
wsl --configure --disable-proxy-mirroring
# 1. 停止旧容器(替换为你的容器ID/名称)
docker stop [容器ID/名称]
# 2. 删除旧容器(可选,避免冲突)
docker rm [容器ID/名称]
# 3. 重新启动容器(带 GPU 映射 + 扩容 shm)
docker run --gpus all --shm-size=8g -v D:/code/python/异常检测/FastFlow:/app -it fastflow:cu129
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu124
# 列出所有容器(包括运行中/已停止)
docker ps -a
# 格式:docker exec -it <容器ID/名称> /bin/bash
# 示例1:用容器ID进入
docker exec -it 1234567890ab /bin/bash
# 示例2:用容器名称进入(更易记)
docker exec -it fastflow_container /bin/bash
进入运行中容器:docker exec -it <容器ID/名称> /bin/bash(核心命令);
进入已停止容器:先 docker start 再 docker exec;
新建并进入容器:docker run -it <镜像名> /bin/bash;
核心是先通过 docker ps -a 找到容器 ID / 名称,再按需选择命令。
python main.py -cfg configs/resnet18.yaml --data /app/mvtec -cat bottle
参考链接:
1、Docker Desktop 设置显卡与调用显卡全攻略
https://cloud.baidu.com/article/3732885