找回密码
 立即注册
首页 业界区 安全 完整教程:Ubuntu 22.04 部署 CUDA 12.5 + NVIDIA 驱动 ...

完整教程:Ubuntu 22.04 部署 CUDA 12.5 + NVIDIA 驱动 555 + Docker 容器化 GPU 环境

怀陶宁 2 小时前
教程概述

目标

在 Ubuntu 22.04 系统中,完成「NVIDIA 555 驱动(原生支持 CUDA 12.5)+ CUDA 12.5 Toolkit + NVIDIA Container Toolkit」全环境部署,实现宿主机 / 容器双端 CUDA 12.5 开发 / 运行能力,解决版本冲突、依赖断裂、Docker 识别 GPU 等核心问题。环境基础


  • 系统:Ubuntu 22.04 LTS (amd64)
  • GPU:NVIDIA GeForce RTX 2080 Ti(适配 555 驱动,其他 GPU 通用)
  • 最终目标:宿主机 nvcc -V 显示 12.5,Docker 容器运行 nvidia/cuda:12.5.0-devel-ubuntu22.04 并正常调用 GPU + nvcc
一、前置准备:清理旧环境(避免版本冲突)

1.1 卸载旧版本 NVIDIA 驱动 / CUDA

bash 运行    
  1. # 彻底卸载所有 NVIDIA 相关包
  2. sudo apt purge -y nvidia-* libnvidia-* cuda-*
  3. # 清理残留依赖
  4. sudo apt autoremove -y --purge
  5. # 删除 DKMS 残留
  6. sudo rm -rf /usr/src/nvidia-*
  7. sudo dkms remove --all nvidia
  8. # 清空 CUDA 残留目录
  9. sudo rm -rf /usr/local/cuda*
复制代码
 1.2 备份关键配置(可选)

bash 运行    
  1. # 备份 apt 源和 Docker 配置
  2. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  3. sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null
复制代码
 1.3 重启系统(清空内核模块残留)

bash 运行    
  1. sudo reboot
复制代码
 二、步骤 1:安装 NVIDIA 555 驱动(适配 CUDA 12.5)

555 是 NVIDIA 官方适配 CUDA 12.5 的稳定版,避开 590 版本的依赖冲突问题。2.1 添加 NVIDIA 官方源

bash 运行    
  1. # 安装密钥和源
  2. wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
  3. sudo dpkg -i cuda-keyring_1.1-1_all.deb
  4. # 更新源
  5. sudo apt update
复制代码
 2.2 安装 555 驱动(仅驱动,不装 CUDA 元包)

bash 运行    
  1. # 安装 555 驱动(跳过推荐依赖,避免拉取 590 版本)
  2. sudo apt install -y nvidia-driver-555 --no-install-recommends
  3. # 重启系统使驱动生效
  4. sudo reboot
复制代码
 2.3 验证驱动安装

bash 运行    
  1. nvidia-smi
复制代码
  预期输出: plaintext     
  1. +-----------------------------------------------------------------------------------------+
  2. | NVIDIA-SMI 555.42.06              Driver Version: 555.42.06      CUDA Version: 12.5     |
  3. |-----------------------------------------+------------------------+----------------------+
  4. | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
  5. | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
  6. |                                         |                        |               MIG M. |
  7. |=========================================+========================+======================|
  8. |   0  NVIDIA GeForce RTX 2080 Ti     Off |   00000000:01:00.0 Off |                  N/A |
  9. | 34%   46C    P8             25W /  260W |       1MiB /  22528MiB |      0%      Default |
  10. +-----------------------------------------+------------------------+----------------------+
复制代码
  核心验证点:Driver Version: 555.x、CUDA Version: 12.5。三、步骤 2:离线安装 CUDA 12.5 Toolkit(绕开 APT 依赖冲突)

通过 NVIDIA 官方离线 .run 包安装,避免 APT 源依赖混乱(核心解决 590 版本冲突问题)。3.1 下载 CUDA 12.5 离线包

bash 运行    
  1. # 创建临时目录
  2. mkdir -p ~/cuda125 && cd ~/cuda125
  3. # 下载最新 CUDA 12.5 离线包(适配 Ubuntu 22.04)
  4. wget https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda_12.5.1_555.42.06_linux.run
  5. # 赋予执行权限
  6. chmod +x cuda_12.5.1_555.42.06_linux.run
复制代码
 3.2 静默安装 CUDA 12.5 Toolkit(仅装工具包,不装驱动)

bash 运行    
  1. # 关键参数:--toolkit 仅装工具包,--driver false 跳过驱动(已手动装 555)
  2. sudo ./cuda_12.5.1_555.42.06_linux.run --silent --toolkit --driver false --toolkitpath=/usr/local/cuda-12.5
复制代码
 3.3 配置 CUDA 环境变量(永久生效)

bash 运行    
  1. # 写入当前用户环境变量
  2. echo -e "\n# CUDA 12.5 环境变量" >> ~/.bashrc
  3. echo "export CUDA_HOME=/usr/local/cuda-12.5" >> ~/.bashrc
  4. echo "export PATH=\$CUDA_HOME/bin:\$PATH" >> ~/.bashrc
  5. echo "export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
  6. # 加载环境变量
  7. source ~/.bashrc
  8. # (可选)配置系统级环境变量(所有用户生效)
  9. sudo echo -e "\n# CUDA 12.5 系统环境变量" >> /etc/profile
  10. sudo echo "export CUDA_HOME=/usr/local/cuda-12.5" >> /etc/profile
  11. sudo echo "export PATH=\$CUDA_HOME/bin:\$PATH" >> /etc/profile
  12. sudo echo "export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH" >> /etc/profile
  13. sudo source /etc/profile
复制代码
 3.4 验证 CUDA Toolkit 安装

bash 运行    
  1. nvcc -V
复制代码
  预期输出: plaintext     
  1. nvcc: NVIDIA (R) Cuda compiler driver
  2. Copyright (c) 2005-2024 NVIDIA Corporation
  3. Built on Thu_Jun__6_02:18:23_PDT_2024
  4. Cuda compilation tools, release 12.5, V12.5.82
  5. Build cuda_12.5.r12.5/compiler.34385749_0
复制代码
  核心验证点:release 12.5。四、步骤 3:配置 NVIDIA Container Toolkit(Docker 调用 GPU)

4.1 安装 nvidia-docker2(核心组件,解决 Docker 识别 GPU 问题)

bash 运行    
  1. # 添加 NVIDIA Container Toolkit 源
  2. curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  3. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  4. curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  5. # 更新源并安装 nvidia-docker2
  6. sudo apt update
  7. sudo apt install -y nvidia-docker2
复制代码
 4.2 配置 Docker 守护进程(加载 NVIDIA 运行时)

bash 运行    
  1. # 覆盖/生成正确的 daemon.json 配置
  2. sudo echo '{
  3.     "ipv6": false,
  4.     "registry-mirrors": ["http://docker.882286.xyz"],
  5.     "runtimes": {
  6.         "nvidia": {
  7.             "path": "/usr/bin/nvidia-container-runtime",
  8.             "runtimeArgs": []
  9.         }
  10.     }
  11. }' > /etc/docker/daemon.json
  12. # 重启 Docker 服务
  13. sudo systemctl daemon-reload
  14. sudo systemctl restart docker
复制代码
 4.3 验证 Docker 运行时配置

bash 运行    
  1. sudo docker info | grep -i runtime
复制代码
  预期输出: plaintext     
  1. Runtimes: io.containerd.runc.v2 nvidia runc
  2. Default Runtime: runc
复制代码
  核心验证点:nvidia 出现在 Runtimes 列表中。五、步骤 4:验证 Docker 容器运行 CUDA 12.5

5.1 关键说明:CUDA 镜像选择

镜像标签包含组件是否有 nvcc用途12.5.0-base-ubuntu22.04仅 CUDA Runtime❌ 无运行已编译的 CUDA 程序12.5.0-devel-ubuntu22.04Runtime + Toolkit(含 nvcc)✅ 有开发 / 编译 CUDA 程序5.2 运行 CUDA 12.5 开发镜像(验证 nvcc + GPU)

bash 运行    
  1. # 运行 devel 镜像,验证 nvcc 和 GPU 识别
  2. sudo docker run --rm --gpus all nvidia/cuda:12.5.0-devel-ubuntu22.04 bash -c "nvcc -V && echo '---' && nvidia-smi"
复制代码
  预期输出: plaintext     
  1. nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2024 NVIDIA CorporationBuilt on Wed_Apr_17_19:19:55_PDT_2024Cuda compilation tools, release 12.5, V12.5.40Build cuda_12.5.r12.5/compiler.34080961_0---+-----------------------------------------------------------------------------------------+
  2. | NVIDIA-SMI 555.42.06              Driver Version: 555.42.06      CUDA Version: 12.5     |
  3. |-----------------------------------------+------------------------+----------------------+
  4. | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
  5. | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
  6. |                                         |                        |               MIG M. |
  7. |=========================================+========================+======================|
  8. |   0  NVIDIA GeForce RTX 2080 Ti     Off |   00000000:01:00.0 Off |                  N/A |
  9. | 34%   46C    P8             25W /  260W |       1MiB /  22528MiB |      0%      Default |
  10. +-----------------------------------------+------------------------+----------------------+
复制代码
 六、常见问题与解决方案

问题 1:Docker 报错 could not select device driver "" with capabilities: [[gpu]]


  • 原因:缺少 nvidia-docker2 组件,Docker 无法识别 GPU 驱动。
  • 解决:重新安装 nvidia-docker2(参考步骤 4.1),重启 Docker。
问题 2:容器内报错 exec: "nvcc": executable file not found in $PATH


  • 原因:使用了 base 镜像(无 nvcc),仅 devel 镜像包含编译器。
  • 解决:改用 nvidia/cuda:12.5.0-devel-ubuntu22.04 镜像。
问题 3:安装驱动时出现 590 版本依赖冲突


  • 原因:APT 源自动拉取 590 版本,与 555 冲突。
  • 解决:清理 590 缓存(sudo rm -f /var/cache/apt/archives/*590*.deb),通过 apt-preferences 锁定 555 版本。
问题 4:CUDA 安装时报 --no-driver 未知参数


  • 原因:CUDA 12.x 离线包参数调整,--no-driver 改为 --driver false。
  • 解决:使用 --silent --toolkit --driver false 参数(参考步骤 3.2)。
七、总结

本教程完成了从「环境清理 → 驱动升级 → CUDA 安装 → Docker 配置 → 容器验证」的全流程,核心解决了: 

  • NVIDIA 590 版本依赖冲突问题(选择 555 稳定版);
  • APT 源依赖混乱问题(离线安装 CUDA 12.5);
  • Docker 无法识别 GPU 驱动问题(安装 nvidia-docker2);
  • CUDA 镜像无 nvcc 问题(选择 devel 镜像)。
 最终实现: 

  • 宿主机:555 驱动 + CUDA 12.5 Toolkit,支持 CUDA 程序编译;
  • Docker 容器:无缝调用 GPU,运行 CUDA 12.5 开发 / 运行环境。
 该环境可直接用于 CUDA 程序开发、深度学习训练、容器化 GPU 部署等场景。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册