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

常规环境可访问GPU但Docker容器无法识别的问题求助

问题描述

我基于以下Dockerfile构建镜像:

FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update --fix-missing && \
        apt install python3-pip -y && \
        ln -sf /usr/bin/python3 /usr/bin/python && \
        ln -sf /usr/bin/pip3 /usr/bin/pip

RUN python -m pip install --upgrade pip

RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
WORKDIR /test
COPY ./docker_entry_point.sh .
# entry_point just launching bash
ENTRYPOINT ["./docker_entry_point.sh"]

尝试用两种命令启动容器:

docker run -it --rm --privileged img_name:latest
docker run -it --rm --gpus all img_name:latest

但两种方式下执行torch.cuda.device_count()都返回0,无法检测到GPU。容器内执行nvidia-smi提示:

bash: nvidia-smi: command not found

nvcc --version可正常返回:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

执行ls -l /dev/nvidia*提示:

ls: cannot access '/dev/nvidia*': No such file or directory

同一台机器的conda环境中安装了:

torch              2.0.0+cu118
torchaudio         2.0.1+cu118
torchvision        0.15.1+cu118

该环境可正常访问GPU,请问哪里操作出错了?

问题原因及解决办法

核心原因

你使用的nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04是CUDA开发镜像,仅包含CUDA编译器(nvcc)等开发工具,未预装NVIDIA驱动的用户态组件(如nvidia-smi);同时容器启动时GPU设备未正确映射到容器内部,导致/dev/nvidia*设备文件不存在,PyTorch无法检测到GPU。

解决步骤

  • 更换基础镜像
    改用包含NVIDIA驱动运行时的镜像,比如nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu20.04。runtime镜像预装了nvidia-smi等驱动组件,能配合NVIDIA Docker工具链正确加载GPU设备。

  • 确认NVIDIA Docker工具链正常
    先在宿主机执行nvidia-smi验证驱动正常,再检查nvidia-container-toolkit是否安装正确:

    nvidia-container-cli info
    

    若toolkit未安装,需按官方指引完成对应版本的安装。

  • 正确启动容器
    必须使用--gpus all参数启动容器,--privileged无法替代GPU设备映射,正确命令:

    docker run -it --rm --gpus all img_name:latest
    
  • 验证GPU状态
    容器启动后先执行nvidia-smi确认GPU可被识别,再运行torch.cuda.device_count()验证PyTorch的GPU检测功能。

额外优化建议

如果需要保留开发环境(如nvcc),可以继续使用devel镜像,但需手动安装与宿主机版本匹配的NVIDIA驱动运行时组件:

RUN apt-get install -y nvidia-driver-525 # 版本需与宿主机nvidia-smi显示的驱动版本一致

不过更推荐直接使用runtime镜像,能避免驱动版本冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:46