You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于nvidia/cuda:10.0-cudnn7-devel构建GPU Docker镜像遇Torch及nvidia-smi故障求助

解决Docker容器中CUDA/GPU无法识别的问题

我来帮你排查下这个问题——你遇到的GPU识别故障,核心是两个关键问题:容器运行时的配置缺失,以及镜像内不必要的组件安装导致的版本冲突。下面一步步帮你解决:

第一步:修正镜像构建脚本,移除冲突的安装命令

nvidia/cuda:10.0-cudnn7-devel这个官方镜像已经预装了适配CUDA 10.0的完整工具链,包括nvidia-smi所需的核心组件。你手动执行的:

RUN apt install nvidia-cuda-toolkit -y
RUN apt-get install nvidia-utils-410 -y

会引入不兼容的版本,直接破坏原有环境,这是导致nvidia-smi报错的主要原因。

正确的镜像构建示例:

# 基础镜像使用官方CUDA 10.0 + cuDNN7开发版
FROM nvidia/cuda:10.0-cudnn7-devel

# 安装Python 3.6及依赖
RUN apt-get update && apt-get install -y \
    python3.6 \
    python3.6-dev \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*

# 安装适配CUDA 10.0的PyTorch版本(1.2.0或1.3.1都是兼容的)
RUN pip3 install torch==1.2.0 torchvision==0.4.0

第二步:确保Docker环境配置了NVIDIA容器运行时

容器内的nvidia-smi和CUDA能正常工作,必须依赖NVIDIA Docker runtime,你需要完成以下配置:

  • 卸载旧版的nvidia-docker(如果之前安装过)
  • 安装nvidia-docker2
  • 重启Docker服务

配置完成后,必须用--gpus all参数启动容器,比如:

docker run --gpus all -it --rm your-built-image-name

第三步:验证GPU是否正常工作

进入容器后,先执行nvidia-smi,如果能正常显示GPU型号、驱动版本等信息,说明运行时配置没问题。接着启动Python,执行:

import torch
print(torch.cuda.is_available())

此时应该返回True

额外注意点

  • 你的宿主机NVIDIA驱动版本必须>=410.48(CUDA 10.0的最低要求驱动版本),否则容器内也无法识别GPU
  • 不要随意修改官方CUDA镜像内的CUDA组件版本,官方镜像已经做了严格的版本适配,手动安装会导致不可预知的冲突

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

火山引擎 最新活动