容器运行时支持GPU,并使用1panel安装ollama

前言

安装Docker请看之前博文:Docker实战中1panel方式安装Docker。

安装 NVIDIA 容器工具包

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

安装

先决条件

  1. 阅读有关平台支持的部分。
  2. 为您的 Linux 发行版安装 NVIDIA GPU 驱动程序。NVIDIA 建议使用发行版对应的软件包管理器安装驱动程序。有关使用软件包管理器安装驱动程序的信息,请参阅NVIDIA 驱动程序安装快速入门指南。或者,您也可以通过下载安装程序来安装驱动程序.run
    在使用 cgroup 驱动程序的系统上存在一个已知问题,systemd该问题会导致容器在运行时失去对所请求 GPU 的访问权限 。请参阅故障排除文档了解更多信息。systemctl daemon reload

使用apt:Ubuntu,Debian(不可用)

  1. 配置生产存储库:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L 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

(可选)配置存储库以使用实验包:

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
  1. 从存储库更新软件包列表:
sudo apt-get update
  1. 安装 NVIDIA Container Toolkit 软件包:
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1sudo apt-get install -y \nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

很不幸,结果报错:

错误:7 [https://nvidia.github.io/libnvidia-container/stable/deb/amd64](https://nvidia.github.io/libnvidia-container/stable/deb/amd64) InRelease Could not handshake: Error in the pull function. [IP: 185.199.110.153 443] 
错误:8 [https://nvidia.github.io/libnvidia-container/experimental/deb/amd64](https://nvidia.github.io/libnvidia-container/experimental/deb/amd64) InRelease Could not handshake: Error in the pull function. [IP: 185.199.110.153 443] 正在读取软件包列表... 完成 
W: 无法下载 [https://nvidia.github.io/libnvidia-container/stable/deb/amd64/InRelease](https://nvidia.github.io/libnvidia-container/stable/deb/amd64/InRelease) Could not handshake: Error in the pull function. [IP: 185.199.110.153 443] 
W: 无法下载 [https://nvidia.github.io/libnvidia-container/experimental/deb/amd64/InRelease](https://nvidia.github.io/libnvidia-container/experimental/deb/amd64/InRelease) Could not handshake: Error in the pull function. [IP: 185.199.110.153 443] 
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。 

下载deb后安装(可用)

  1. 首先查看上面安装命令里面的这个链接
    https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list
deb https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
#deb https://nvidia.github.io/libnvidia-container/experimental/deb/$(ARCH) /
  1. 点进去https://nvidia.github.io/libnvidia-container/stable/deb
    页面显示Unsupported distribution or misconfigured repository settings

  2. 在这个页面找到GitHub Pages repository structure

  • stable/deb: https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable/deb
  • experimental/deb: https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/experimental/deb
  • stable/rpm: https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable/rpm
  • experimental/rpm: https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/experimental/rpm
  1. 好嘛,找到老巢了
    https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable/deb/amd64

  2. 下载下面几个文件,安装即可

sudo dpkg -i nvidia-container-toolkit_1.17.7-1_amd64.deb nvidia-container-toolkit-base_1.17.7-1_amd64.deb libnvidia-container1_1.17.7-1_amd64.deb libnvidia-container-tools_1.17.7-1_amd64.deb

配置

先决条件

  • 您安装了受支持的容器引擎(Docker、Containerd、CRI-O、Podman)。
  • 您安装了 NVIDIA Container Toolkit。

配置Docker

  1. 使用以下nvidia-ctk命令配置容器运行时:
sudo nvidia-ctk runtime configure --runtime=docker

nvidia-ctk命令会修改/etc/docker/daemon.json主机上的文件。该文件已更新,以便 Docker 可以使用 NVIDIA 容器运行时。

{"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}}
}
  1. 重新启动 Docker 守护进程:
sudo systemctl restart docker

配置 containerd(用于 Kubernetes)

  1. 使用以下nvidia-ctk命令配置容器运行时:
sudo nvidia-ctk runtime configure --runtime=containerd

nvidia-ctk命令会修改/etc/containerd/config.toml主机上的文件。该文件已更新,以便 containerd 可以使用 NVIDIA 容器运行时。

  1. 重启containerd:
sudo systemctl restart containerd

运行示例工作负载

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/sample-workload.html

安装和配置工具包并安装 NVIDIA GPU 驱动程序后,您可以通过运行示例工作负载来验证您的安装。

  • 运行示例 CUDA 容器:
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

您的输出应类似于以下输出:

Thu Aug 14 13:54:11 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.03              Driver Version: 575.64.03      CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| 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 4090        Off |   00000000:01:00.0  On |                  Off |
| 31%   37C    P8             34W /  450W |    1280MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

1panel安装docker版ollama

从应用商店安装

  1. 端口外部访问勾选上
  2. GPU配置如下:
reservations:devices:- capabilities:- gpucount: alldriver: nvidia
  1. 模型挂载换了下路径:
volumes:- /home/d/.ollama:/root/.ollama

在这里插入图片描述

GPU监控

很是方便,妈妈再也不用担心忘记敲:nvidia-smi
在这里插入图片描述

模型

之前写过一篇直接安装ollama的博文:使用ollama部署本地大模型(没有GPU也可以),实现IDEA和VS Code的git commit自动生成,其中模型位置:/usr/share/ollama/.ollama/models
在docker挂载中改为了/home/d/.ollama/models,点击从服务器同步即可
在这里插入图片描述

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

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

相关文章

高并发内存池 性能瓶颈分析与基数树优化(9)

文章目录前言一、性能瓶颈分析操作步骤及其环境配置分析性能瓶颈二、基数树优化单层基数树二层基数树三层基数树三、使用基数树来优化代码总结前言 到了最后一篇喽,嘻嘻!   终于是要告一段落了,接下来我们将学什么呢,再说吧&…

C#面试题及详细答案120道(01-10)-- 基础语法与数据类型

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

机器翻译:回译与低资源优化详解

文章目录一、机器翻译的瓶颈二、回译(Back-Translation)2.1 什么是回译?2.2 为什么回译有效?2.3 回译的缺点与挑战三、低资源优化详解3.1 数据层面策略3.2 模型层面策略3.3 架构层面策略四、回译与低资源优化对比4.1 回译与低资源…

leetcode-python-344反转字符串

题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s [“h”,“…

【Python】新手入门:什么是python字符编码?python标识符?什么是pyhon保留字?

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵文章目录🌵 前言 💡一、编码 📝二、标识符 🎯三、Py…

为什么要使用消息队列呢?

消息队列(Message Queue,MQ)在分布式系统中扮演着 ​异步通信枢纽​ 的角色,其核心价值在于解决系统间的解耦、流量削峰、异步处理等关键问题。以下是它的核心价值及典型应用场景:⚙️ 一、核心价值:解决什…

ROS机器人云实践案例博客建议和范文-AI版本

海报图AI图1AI图2zhangrelay的博客以技术深度、跨界思考和社会洞察为特色,内容兼具实用性与前瞻性,但部分观点存在争议,需结合具体主题辩证看待。以下从内容特色、技术深度、社会洞察、争议点四个维度展开分析:一、内容特色&#…

UE小:编辑器模式下「窗口/鼠标不在焦点」时仍保持高帧率

要在UE编辑器模式下「窗口/鼠标不在焦点」时仍保持高帧率,可按下面做法: 关闭编辑器的后台降频选项:在 Edit -> Editor Preferences -> General -> Performance 中取消勾选 “Use Less CPU when in Background”。

VS2022 + Qt 5.15.2+Occ开发环境搭建流程

Visual Studio 2022 Qt 5.15.2 图形处理开发环境搭建流程 1. 安装 Visual Studio 2022 下载安装程序:Visual Studio 官网选择工作负载: ✔️ “使用C的桌面开发”✔️ “通用Windows平台开发”(可选) 安装组件: ✔️…

多任务并发:进程管理的核心奥秘

多任务(并发):让系统具备同时处理多个任务的能力1. 多进程2. 多线程3. 进程间通信一、进程的基本概念1. 什么是进程?正在运行的程序,其运行过程中需要消耗内存和CPU。进程的特点:动态性:进程是程…

高效TypeScript开发:VSCode终极配置指南

⚙️ VSCode TypeScript 专属效率设置大全 (纯 settings.json 配置) // .vscode/settings.json {/* 🔍 引用与类型追踪 */"typescript.referencesCodeLens.enabled": true, // 显示引用计数(点击查看所有引用处)"typescript.implementationsCod…

资本的自我否定:四重矛盾中的历史辩证法

资本自诞生以来,便以“增殖”为唯一使命,如同一个不知疲倦的扩张机器,在推动生产力飞跃的同时,也埋下了自我毁灭的种子。这种自我否定并非外部力量的强加,而是其内在逻辑的必然展开——从价格战的困局到经济危机的周期…

Linux系统安装Docker及常见问题解决

1.1 解决安装Docker问题 Linux的发行版本,大多数还是在用CentOS,虽然CentOS已经不更新了。。。。。CentOS因为不更新了,所以很多的yum源都失效了。导致安装Docker失败! 只需要更新一下yum源。直接将之前默认的yum源替换为阿里的…

CICD-Devops整合Kubernetes-4

Devops整合Kubernetes Kubernetes部署快速安装Kubernetes **官网:**https://kuboard.cn/选择默认支持docker的版本1.19前置环境部署 所有节点均需执行同操作 # 配置主机名解析 [rootKubernetes-master ~]# echo "127.0.0.1 $(hostname)" >> /etc/ho…

C/C++ 指针与内存操作详解——从一级指针到字符串转换函数的完整解析

C/C 指针与内存操作详解——从一级指针到字符串转换函数的完整解析 本文将带你系统理解 一级指针与二级指针的区别、数组拷贝的注意事项、字符串转整数函数实现 等 C/C 编程中常见且易混淆的知识点,并配合详细代码示例与常见坑点分析,让你从入门到掌握。…

Java -- HashSet的全面说明-Map接口的常用方法-遍历方法

目录 1. HashSet的全面说明 2. Map接口实现类的特点 注意:讲的是JDK8的Map接口特点 3. Map接口的常用方法 4. Map遍历方法 1. HashSet的全面说明 1. HashSet实现了Set接口 2. HashSet实际上是HashMap 3. 可以存放null值,但是只能有一个null 4. H…

【python】类型注解

参考【为什么越来越多Python项目都在写类型注解?】 https://www.bilibili.com/video/BV1sW81zbEkD/?share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3代码示例使用变量 : 类型名 来注解。""" python类型注解 """…

零基础入门PostgreSQL教学视频,持续更新

PostgreSQL数据库在国内的迅速发展,引起了很多数据库从业者的注意,不少人都想学习这个热门的技术,但是毕竟有PostgreSQL有自己的特点与优势,不同于Oracle、MySQL等数据库,想要快速入门PostgreSQL技术需要下一些功夫。一…

PageAdmin与WordPress哪个适合企业建站

对于企业建站需求,PageAdmin和WordPress各有特点,以下是综合对比分析: ‌功能与专业性‌ ‌PageAdmin‌:专为企业级网站设计,内置自定义字段、表单和多站点管理功能,适合需要高定制化的企业官网、政府或学校…

微服务单元测试组件

背景 微服务的调试,哪怕是简单问题,需要启动9个服务,ui/nginx 网关 应用 auth 基础数据服务 redis nacos 平台服务 ,效率差得不行,准备开发一个支持微服务环境的单元测试组件, 组件解决3个问题&#xff1a…