配置daemon.json使得 Docker 容器能够使用服务器GPU【验证成功】

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连

0-9

文章目录

    • 🔍你遇到的错误:
    • 🔍 根本原因
    • ✅ 解决方案:正确安装 NVIDIA Container Toolkit
      • ✅ 第一步:卸载旧版本(如果存在)
      • ✅ 第二步:添加 NVIDIA 仓库并安装
      • ✅ 第三步:安装 `nvidia-container-toolkit`
      • ✅ 第四步:配置 Docker 使用 NVIDIA 作为默认运行时
      • ✅ 第五步:重启 Docker
      • ✅ 第六步:验证安装是否成功
        • 1. 检查 `nvidia-container-runtime` 是否在 PATH
        • 2. 测试运行 GPU 容器
      • 这里我的验证命令和效果如下
      • ✅ 第七步:更新你的 `docker-compose.yml`
      • ✅ 第八步:重新构建并启动
    • ✅ 验证服务
    • 🎯 总结
    • ❤️ 一起学AI

🔍你遇到的错误:

exec: "nvidia-container-runtime": executable file not found in $PATH: unknown

说明:Docker 找不到 nvidia-container-runtime 这个可执行文件,这是 NVIDIA Docker 支持的核心组件。


🔍 根本原因

虽然你安装了 nvidia-docker2,但它的底层运行时 nvidia-container-runtime 没有被正确安装或没有加入系统 PATH


✅ 解决方案:正确安装 NVIDIA Container Toolkit

请按以下步骤 重新安装并配置 NVIDIA Container Toolkit


✅ 第一步:卸载旧版本(如果存在)

sudo apt-get purge -y nvidia-docker2 nvidia-container-toolkit
sudo rm -rf /etc/nvidia-container-runtime

✅ 第二步:添加 NVIDIA 仓库并安装

# 添加密钥和仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list# 更新包列表
sudo apt-get update

✅ 第三步:安装 nvidia-container-toolkit

sudo apt-get install -y nvidia-container-toolkit

⚠️ 注意:现在推荐使用 nvidia-container-toolkit 而不是旧的 nvidia-docker2


✅ 第四步:配置 Docker 使用 NVIDIA 作为默认运行时

sudo nvidia-ctk runtime configure --runtime=docker

这会自动修改 /etc/docker/daemon.json,添加:

{"default-runtime": "nvidia","runtimes": {"nvidia": {"path": "nvidia-container-runtime","runtimeArgs": []}}
}

✅ 第五步:重启 Docker

sudo systemctl restart docker

✅ 第六步:验证安装是否成功

1. 检查 nvidia-container-runtime 是否在 PATH
which nvidia-container-runtime

✅ 正常输出应为:

/usr/bin/nvidia-container-runtime
2. 测试运行 GPU 容器
docker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi

你应该看到类似这样的输出(显示你的 GPU 信息):

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.60.13    Driver Version: 525.60.13    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   38C    P8     9W /  70W |      0MiB / 15360MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

这里我的验证命令和效果如下

docker run -it --rm --gpus all pytorch/pytorch:2.7.0-cuda12.6-cudnn9-runtime /bin/bash# 进入容器内
root@e16c6f18b6bc:/workspace# nvidia-smi
Tue .. 2025       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01             Driver Version: 535.183.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3090        Off | 00000000:01:00.0 Off |                  N/A |
|  0%   35C    P8              12W / 350W |  18396MiB / 24576MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------++---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+

✅ 第七步:更新你的 docker-compose.yml

你现在可以使用 --gpus 语法(推荐),不再需要 runtime: nvidia

services:web:build: .container_name: qwen-qa-webdeploy:resources:reservations:devices:- driver: nvidiacount: 1capabilities: [gpu]environment:- NVIDIA_VISIBLE_DEVICES=all- NVIDIA_DRIVER_CAPABILITIES=compute,utility- PYTHONUNBUFFERED=1- MODELSCOPE_CACHE=/app/modelsvolumes:- ./uploads:/app/uploads- ./models:/app/models- ./gunicorn.conf.py:/app/gunicorn.conf.pynginx:image: nginx:alpinecontainer_name: qwen-qa-nginxports:- "8083:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf- ./backend/static:/app/backend/static- ./backend/templates:/app/backend/templates- ./uploads:/app/uploadsdepends_on:- web

✅ 注意:移除了 runtime: nvidia,改用 deploy.resources.reservations.devices


✅ 第八步:重新构建并启动

docker-compose downdocker-compose up --build -d

✅ 验证服务

# 查看日志
docker logs qwen-qa-web -f

你应该看到:

  • Gunicorn 启动
  • Qwen3 模型开始加载(可能需要 2~5 分钟)
  • Nginx 成功代理请求

访问:http://your-server-ip:8083


🎯 总结

问题解决方案
nvidia-container-runtime not found安装 nvidia-container-toolkit
OCI runtime create failed使用 nvidia-ctk runtime configure 配置 Docker
runtime: nvidia 失效改用 deploy.resources.devices(Docker Compose v2+)

现在你的 Docker 应该可以 正确调用 GPU 来运行 Qwen3 模型了!

如果仍有问题,请运行:

nvidia-smidocker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi

❤️ 一起学AI


  • ❤️ 如果文章对你有些许帮助、蟹蟹各位读者大大点赞、评论鼓励博主的每一分认真创作

9-9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91257.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统进程管理与计划任务详解

Linux 系统进程管理与计划任务详解 一、程序与进程的基本概念 程序:保存在外部存储介质中的可执行机器代码和数据的静态集合。进程:在CPU及内存中处于动态执行状态的计算机程序。关系:每个程序启动后,可创建一个或多个进程。 二、…

【图像处理】直方图均衡化c++实现

直方图均衡化是一种通过调整图像像素灰度值分布,来增强图像对比度的经典数字图像处理技术。其核心在于将原始图像的灰度直方图从集中的某个区间“拉伸”或“均衡”到更广泛的区间,让图像的明暗细节更清晰,关键在于利用累积分布函数实现灰度值…

Web前端实战:Vue工程化+ElementPlus

1.Vue工程化 1.1介绍 模块化:将js和css等,做成一个个可复用模块组件化:我们将UI组件,css样式,js行为封装成一个个的组件,便于管理规范化:我们提供一套标准的规范的目录接口和编码规范&#xff0…

ECMAScript2021(ES12)新特性

概述 ECMAScript2021于2021年6月正式发布, 本文会介绍ECMAScript2021(ES12),即ECMAScript的第12个版本的新特性。 以下摘自官网:ecma-262 ECMAScript 2021, the 12th edition, introduced the replaceAll method for Strings; Promise.any,…

Tlias 案例-整体布局(前端)

开发流程前端开发和后端开发是一样的&#xff0c;都需要阅读接口文档。 准备工作&#xff1a; 1&#xff1a;导入项目中准备的基础过程到 VsCode。2&#xff1a;启动前端项目&#xff0c;访问该项目3&#xff1a;熟悉一下基本的布局<script setup></script><tem…

三十二、【Linux网站服务器】搭建httpd服务器演示虚拟主机配置、网页重定向功能

httpd服务器功能演示一、虚拟主机配置虚拟主机技术全景虚拟主机目录规范1. 基于端口的虚拟主机&#xff08;8080/8081&#xff09;2. 基于IP的虚拟主机&#xff08;192.168.1.100/192.168.1.101&#xff09;3. 基于域名的虚拟主机&#xff08;site1.com/site2.com&#xff09;二…

串行化:MYSQL事务隔离级别中的终极防护

在现代应用程序中&#xff0c;数据的一致性和可靠性至关重要。想象一下&#xff0c;如果在一个银行系统中&#xff0c;两个用户同时试图转账到同一个账户&#xff0c;最终的数据结果可能会出乎意料。为了避免这种情况&#xff0c;MYSQL提供了不同的事务隔离级别&#xff0c;其中…

RAG:检索增强生成的范式演进、技术突破与前沿挑战

1 核心定义与原始论文 RAG&#xff08;Retrieval-Augmented Generation&#xff09;由Facebook AI Research团队于2020年提出&#xff0c;核心思想是将参数化记忆&#xff08;预训练语言模型&#xff09;与非参数化记忆&#xff08;外部知识库检索&#xff09;结合&#xff0c…

2024年蓝桥杯Scratch10月图形化stema选拔赛真题——旋转的图形

旋转的图形编程实现旋转的图形。具体要求1&#xff09;点击绿旗&#xff0c;在舞台上出现滑杆形式的变量 r&#xff0c;取值范围为-1、0、1&#xff0c;默认值为 0&#xff0c;如图所示&#xff1b;2&#xff09;1秒后&#xff0c;在舞台上绘制出一个红色正方形&#xff08;边长…

【音视频】WebRTC 开发环境搭建-Web端

一、开发环境搭建 1.1 安装vscode 下载VSCode&#xff1a;https://code.visualstudio.com/&#xff0c;下载后主要用于开发Web前端页面&#xff0c;编写前端代码 安装完成后下载Live Server插件&#xff0c;用于本地开发&#xff0c;实时加载前端页面 1.1.1 前端代码测试 下…

力扣54:螺旋矩阵

力扣54:螺旋矩阵题目思路代码题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 思路 思路很简单创建一个二维数组然后按照箭头所示的顺序一层一层的给二维数组相应的位置赋值即可。难点是我们是一层一层的赋值…

【CSS】设置表格表头固定

1.设置thead样式在thead元素中增加样式&#xff1a;position: sticky;top: 0;2.设置table样式在table元素中增加样式&#xff1a;border-collapse: separate; /* 分离边框模式 */ border-spacing: 0;3.设置表头伪元素样式增加样式&#xff1a;th::after {content: ;position: a…

Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)

Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测&#xff08;C#代码&#xff0c;UI界面版&#xff09;&#xff09;工业相机使用YoloV8模型实现标签条码一维码的检测工业相机通过YoloV8模型实现标签条码的检测的技术背景在相机SDK中获取图像转换…

如何编写好的测试用例?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快对于软件测试工程师来说&#xff0c;设计测试用例和提交缺陷报告是最基本的职业技能。是非常重要的部分。一个好的测试用例能够指示测试人员如何对软件进行测试。在…

《Java 程序设计》第 12 章 - 异常处理

大家好&#xff01;今天我们来学习《Java 程序设计》中的第 12 章 —— 异常处理。在编程过程中&#xff0c;错误和异常是不可避免的。一个健壮的程序必须能够妥善处理各种异常情况。本章将详细介绍 Java 中的异常处理机制&#xff0c;帮助大家编写出更稳定、更可靠的 Java 程序…

STM32CubeIDE新建项目过程记录备忘(二) GPIO输出demo:LED闪烁

利用前面创建好的基础模板项目文件&#xff0c;创建第一个应用项目&#xff0c;单片机的hello world&#xff1a;LED闪烁。打开模板文件文件--从文件系统中打开项目&#xff1a;在弹出的窗口中选择之前创建的模板项目文件并打开。复制粘贴新项目 在项目管理器&#xff0c;复制之…

HTML基础P2 | JS基础讲解

什么是JS JS是一个网页的脚本语言&#xff0c;你可以理解为在HTML中写类似于JAVA等高级编程语言的代码&#xff0c;使得网页可以实现一些包含逻辑处理的交互操作 简单上手例子 接下来&#xff0c;给大家一个简单的小例子来感受一下 <!DOCTYPE html> <html lang&qu…

QT笔记(2)——vscode + CMAKE + qtcreate的操作方式

1.vscode 下载cmake&#xff0c;clangd&#xff0c;qtConfigure&#xff0c;cmake tool的相关插件支持 2. qtConfigure插件配置 根据自己下载的qt目录下寻找如图的相关工具 3. qt环境变量配置 在系统变量的path中添加qt编译需要的环境变量。 4.下载Cmake支持 CMake下…

sed编程入门

一.sed是啥sed&#xff08;流编辑器&#xff0c;Stream Editor&#xff09;是 Unix/Linux 系统中强大的文本处理工具&#xff0c;常用于对文本进行替换、删除、插入、追加等操作。它逐行处理输入文本&#xff0c;并根据提供的脚本命令修改文本&#xff0c;最后输出结果。二.基本…

知识速查大全:python面向对象基础

目录 一、面向对象的基本概念 二、类和对象 1.类 2.对象 三、属性&#xff08;数据&#xff09;和方法 1.数据 1.1.实例数据 1.2.类数据 2.方法 2.1.实例方法 2.2.类方法 3.数据和方法的综合使用 四、面向对象三大特性 1.封装 2.继承 2.1.单继承 2.2.多继承 2.3.混合类 2.4.方法…