配置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
英文地址,請注明出處:http://en.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.方法…