安装 Docker GPU 版本的过程及遇到的坑

server/2025/1/22 13:35:59/

首先,安装的 Docker 版本并不支持 GPU,因此需要安装支持 GPU 的 Docker 版本。然而,在安装和配置过程中,遇到了一系列问题和挑战。

错误的安装步骤

以下是我在尝试安装 GPU 版本时,执行的错误操作:

# 安装 NVIDIA 驱动
sudo apt-get update
sudo apt-get install -y nvidia-driver-460# 添加 NVIDIA 运行时配置
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia
EOF# 重新启动 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

这段脚本是根据 GPT 提供的方案执行的,但我没有注意到它可能会导致一些问题。最终我发现,在执行完该脚本后,Docker 无法启动,并且出现了以下错误:

xtx@dell-PowerEdge-R750:~$ nvidia-docker --version
nvidia-docker: command not found

发现问题:NVIDIA 驱动安装冲突

接下来,我发现 nvidia-smi 无法执行,也无法找到 NVIDIA 相关的命令。通过检查 NVIDIA 驱动,发现系统中安装了多个版本的 NVIDIA 驱动。

dpkg -l | grep nvidia

于是,我尝试卸载了 nvidia-driver-460,但问题依旧存在:

sudo apt-get remove --purge nvidia-driver-460

多次尝试卸载仍然没有解决问题,驱动仍然有冲突。于是决定彻底清理所有 NVIDIA 驱动,并重新安装:

# 清除所有 NVIDIA 驱动
sudo apt-get purge nvidia*# 更新包管理器
sudo apt-get update# 安装正确版本的 NVIDIA 驱动
sudo apt-get install nvidia-driver-470 nvidia-utils-470

重新安装驱动后,虽然成功安装了 NVIDIA 驱动,但执行 nvcc -V 命令时没有任何输出。这时我怀疑问题可能与 CUDA Toolkit 无关,因为在安装驱动时并没有安装 CUDA。

权限问题及解决

接下来,我检查了 ~/.bashrc 文件,确认路径没有问题。然而,考虑到权限问题,我以 root 用户身份进行检查,发现没有问题。这一步解决了驱动的问题。

安装 Docker GPU 版本及其问题

接下来,我按照官方教程安装 Docker 的 GPU 版本,并配置了相应的 NVIDIA 运行时。但在启动 Docker 时,遇到了如下错误:

(tx) xtx@dell-PowerEdge-R750:/data/xtx/nnUNet/nnunetv2/inference$ systemctl status docker.service
Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
× docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Drop-In: /etc/systemd/system/docker.service.d└─override.confActive: failed (Result: exit-code) since Thu 2025-01-16 13:39:52 CST; 7min ago
TriggeredBy: × docker.socketDocs: https://docs.docker.comProcess: 113728 ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia (code=exited, status=1/FAILURE)Main PID: 113728 (code=exited, status=1/FAILURE)CPU: 92ms

解决问题的过程

一开始,我尝试按照网上的建议修改 /etc/docker/daemon.json 文件,切换到国内镜像源。然而,修改后仍然报错。接着,我打开了 override.conf 文件,发现最初配置中使用了 ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=/usr/bin/nvidia 这一行,而这一行实际上导致了启动失败。

最终,我删除了这行配置,并重新加载并重启了 Docker 服务:

# 重新加载 systemd 配置
sudo systemctl daemon-reload# 重启 Docker 服务
sudo systemctl restart docker

此时,Docker 成功启动,问题得到解决。

简单总结一下

平常使用GPT习惯了,感觉简单问题直接按照它的命令行输入就行,没有仔细理解该指令背后的含义,从而导致版本冲突。另外,发生问题太依赖GPT和教程了,缺少自己的反思。

再面对类似的问题时,应该从头逐步排除法,从系统配置到具体服务的每一步都要仔细检查。解决问题的关键往往是细致入微的排查和多角度的分析。即便是看似简单的操作,背后也可能隐藏着复杂的系统交互和配置依赖。


http://www.ppmy.cn/server/160185.html

相关文章

redis 分布式重入锁

文章目录 前言一、分布式重入锁1、单机重入锁2、redis重入锁 二、redisson实现重入锁1、 添加依赖2、 配置 Redisson 客户端3、 使用 Redisson 实现重入锁4、 验证5、运行项目 三、redisson分布式锁分析1、获取锁对象2、 加锁3、订阅4、锁续期5、释放锁6、流程图 前言 通过前篇…

Data Filtering Network 论文阅读和理解

目录 一、TL&#xff1b;DR 二、Introduction 2.1 apple的结论 2.2 业界做法&#xff1a; 2.3 我们的做法&#xff08;Apple&#xff09; 2.4 如何获取好的DFN 三、未完待续&#xff08;这周出去购物了&#xff0c;下周继续补充&#xff09; 一、TL&#xff1b;DR 核心…

系统架构演进:从单体到微服务的智能转型

软件系统架构的演进&#xff0c;就像生物的进化一样&#xff0c;不断适应着新的环境和需求。从早期的单体架构到如今流行的微服务架构&#xff0c;这不仅仅是技术层面的升级&#xff0c;更是对软件开发模式的一次深刻变革。然而&#xff0c;微服务架构的复杂性也带来了新的挑战…

使用 Element-UI 中的 el-button 添加防抖指令防止重复提交

使用 Element-UI 中的 el-button 添加防抖指令防止重复提交 在现代 Web 开发中&#xff0c;防止用户在短时间内多次点击提交按钮是一个常见的需求。重复点击可能导致表单数据被多次提交&#xff0c;从而引发一系列问题。本文将介绍如何在 Vue.js 项目中使用自定义指令来实现按…

科大讯飞星火语音同传大模型:国内AI翻译技术的重大突破

2025年1月15日&#xff0c;科大讯飞在科技界引起轰动&#xff0c;正式发布了其最新研发的星火同传语音大模型。这一创新技术的问世&#xff0c;标志着国内首个具备端到端语音同传能力的大模型正式面世&#xff0c;预示着AI翻译技术迈入了全新的发展阶段。 星火语音同传大模型的…

面试-业务逻辑2

应用 给定2个数组a、b&#xff0c;若a[i] b[j]&#xff0c;则记(i,j)为一个二元数组&#xff0c;求具体的二元数组及其个数。 实现 a input("请输入数组a的元素个数&#xff1a;") # print(a) a_list list(map(int, input("请输入数组a的元素&#xff0c;…

【Python使用】嘿马头条项目从到完整开发教程第10篇:APScheduler定时任务,1. 什么是RPC【附代码文档】

本教程的知识点为:简介 1. 内容 2. 目标 产品效果 ToutiaoWeb虚拟机使用说明 数据库 理解ORM 作用 思考&#xff1a; 使用ORM的方式选择 数据库 SQLAlchemy操作 1 新增 2 查询 all() 数据库 分布式ID 1 方案选择 2 头条 使用雪花算法 &#xff08;代码 toutiao-backend/common/…

已解决:No converter for [class XXX] with preset Content-Type ‘XXX‘

http://localhost:8085/api/v1.0/user/export org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class cn.com.wind.server.model.vo.Response] with preset Content-Type multipart/form-data;charsetutf-8 最近在开发过程中写一个导出…