You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建nvidia/cuda/pytorch容器无法识别GPU问题求助

解决WSL2下VSCode构建Docker容器无法识别GPU的问题

核心原因

Dockerfile中的ARG gpus=all是构建阶段参数,和容器运行时的GPU挂载完全无关。直接用docker run --gpus all能正常识别GPU,是因为该参数在运行时告诉Docker挂载GPU设备到容器内;而VSCode启动容器时默认没传递这个参数,导致容器无法访问GPU硬件。

解决步骤

1. 简化Dockerfile

移除无用的ARG行,正确的Dockerfile只需:

FROM nvcr.io/nvidia/pytorch:24.08-py3

2. 确保VSCode启动容器时传递GPU挂载参数

方式一:手动添加运行参数

在VSCode的Docker扩展中启动容器时,修改运行命令,添加--gpus all:

docker run --gpus all -it --rm [你的镜像名]

方式二:通过Dev Container配置(如果使用.devcontainer)

在.devcontainer/devcontainer.json中添加runArgs配置,确保启动容器时自动挂载GPU:

{
  "image": "nvcr.io/nvidia/pytorch:24.08-py3",
  "runArgs": ["--gpus", "all"]
}

3. 验证WSL2基础环境

  • 在WSL2终端执行nvidia-smi,确认能正常输出GPU信息(Windows侧已安装NVIDIA驱动,WSL2无需单独安装)。
  • 检查Docker是否配置了NVIDIA Runtime:
    docker info | grep -i nvidia
    
    确保输出中包含NVIDIA Runtime相关内容,若没有则重新安装nvidia-docker2。

4. 验证容器内GPU可用性

启动容器后,执行以下命令确认:

nvidia-smi
python -c 'import torch; print(torch.cuda.is_available())'

补充说明

nvcc --version能正常输出是因为CUDA Toolkit已包含在镜像中,无需GPU硬件即可运行;而nvidia-smi和PyTorch的CUDA检测需要访问实际GPU设备,必须通过--gpus all参数挂载。

内容的提问来源于stack exchange,提问作者Marcos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:34:51