Ubuntu 22.04 离线安装NVIDIA Container Toolkit

Ubuntu 22.04 安装NVIDIA Container Toolkit

NVIDIA Container Toolkit 的官方文档:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
安装过程:
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 

会报:Connection reset by peer in connection to nvidia.github.io:443 的错误,国内服务器访问不到github,后面执行apt-get update 也会报错

root@gpu-node:~# 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 curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to nvidia.github.io:443 gpg: no valid OpenPGP data found. root@gpu-node:~# apt-get update Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease Hit:5 https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease Ign:6 https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease Ign:7 https://nvidia.github.io/libnvidia-container/experimental/deb/amd64 InRelease Ign:6 https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease Get:7 https://nvidia.github.io/libnvidia-container/experimental/deb/amd64 InRelease [1,489 B] Err:7 https://nvidia.github.io/libnvidia-container/experimental/deb/amd64 InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DDCAE044F796ECB0 Get:6 https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease [1,477 B] Err:6 https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DDCAE044F796ECB0 Reading package lists... Done W: GPG error: https://nvidia.github.io/libnvidia-container/experimental/deb/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DDCAE044F796ECB0 E: The repository 'https://nvidia.github.io/libnvidia-container/experimental/deb/amd64 InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details. W: GPG error: https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DDCAE044F796ECB0 E: The repository 'https://nvidia.github.io/libnvidia-container/stable/deb/amd64 InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.

2、更换国内镜像源:

  1. 清理旧配置信息:
sudo rm-f /etc/apt/sources.list.d/nvidia-*.list sudo rm-f /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 
  1. 使用清华源,绕过github
# 清华源提供原始 gpgkey(ASCII armor 格式) sudo mkdir -p /usr/share/keyrings wget -qO - https://mirrors.tuna.tsinghua.edu.cn/nvidia-container-toolkit/gpgkey | \ sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 

发现清华源也报错,访问不到

root@gpu-node:~# wget https://mirrors.tuna.tsinghua.edu.cn/nvidia-container-toolkit/gpgkey -O - | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg--2025-12-09 11:56:18-- https://mirrors.tuna.tsinghua.edu.cn/nvidia-container-toolkit/gpgkey Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.15.130, 2402:f000:1:400::2 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.15.130|:443... File '/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg' exists. Overwrite? (y/N) connected. HTTP request sent, awaiting response... 404 Not Found 2025-12-09 11:56:19 ERROR 404: Not Found. Enter new filename: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg File '/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg' exists. Overwrite? (y/N) y gpg: no valid OpenPGP data found.

4.国内源返回404,也不可用

curl -I https://mirrors.tuna.tsinghua.edu.cn/nvidia-container-toolkit/ubuntu22.04/amd64/Release root@gpu-node:~# curl -I https://mirrors.tuna.tsinghua.edu.cn/nvidia-container-toolkit/ubuntu22.04/amd64/Release HTTP/2 404 server: nginx/1.22.1 date: Tue, 09 Dec 2025 09:37:29 GMT content-type: text/html content-length: 153 vary: Accept-Encoding vary: Accept-Encoding strict-transport-security: max-age=31536000 x-tuna-mirror-id: neomirrors strict-transport-security: max-age=31536000 x-tuna-mirror-id: nanomirrors 
  1. 只能从GitHub地址上下载 deb文件,然后离线装一下软件
    NVIDIA Container Toolkit deb文件所在路径:https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable/deb/amd64/
    需要下载的几个文件名称:文件按顺序装,前面的文件是依赖,最后是正常装上了
    • libnvidia-container1_1.18.1-1_amd64.deb
    • libnvidia-container-tools_1.18.1-1_amd64.deb
    • nvidia-container-toolkit-base_1.18.1-1_amd64.deb
    • nvidia-container-toolkit_1.18.1-1_amd64.deb
 dpkg -i libnvidia-container1_1.18.1-1_amd64.deb dpkg -i libnvidia-container-tools_1.18.1-1_amd64.deb dpkg -i nvidia-container-toolkit-base_1.18.1-1_amd64.deb dpkg -i nvidia-container-toolkit_1.18.1-1_amd64.deb 
root@gpu-node:~# dpkg -i libnvidia-container1_1.18.1-1_amd64.deb Selecting previously unselected package libnvidia-container1:amd64.(Reading database ... 87377 files and directories currently installed.) Preparing to unpack libnvidia-container1_1.18.1-1_amd64.deb ... Unpacking libnvidia-container1:amd64 (1.18.1-1)... Setting up libnvidia-container1:amd64 (1.18.1-1)... Processing triggers for libc-bin (2.35-0ubuntu3.11)... root@gpu-node:~# dpkg -i libnvidia-container-tools_1.18.1-1_amd64.deb Selecting previously unselected package libnvidia-container-tools.(Reading database ... 87385 files and directories currently installed.) Preparing to unpack libnvidia-container-tools_1.18.1-1_amd64.deb ... Unpacking libnvidia-container-tools (1.18.1-1)... Setting up libnvidia-container-tools (1.18.1-1)... root@gpu-node:~# dpkg -i nvidia-container-toolkit-base_1.18.1-1_amd64.deb Selecting previously unselected package nvidia-container-toolkit-base.(Reading database ... 87395 files and directories currently installed.) Preparing to unpack nvidia-container-toolkit-base_1.18.1-1_amd64.deb ... Unpacking nvidia-container-toolkit-base (1.18.1-1)... Setting up nvidia-container-toolkit-base (1.18.1-1)... Created symlink /etc/systemd/system/multi-user.target.wants/nvidia-cdi-refresh.path → /etc/systemd/system/nvidia-cdi-refresh.path. Created symlink /etc/systemd/system/multi-user.target.wants/nvidia-cdi-refresh.service → /etc/systemd/system/nvidia-cdi-refresh.service. Regenerating NVIDIA CDI specification... root@gpu-node:~# dpkg -i nvidia-container-toolkit_1.18.1-1_amd64.deb(Reading database ... 87405 files and directories currently installed.) Preparing to unpack nvidia-container-toolkit_1.18.1-1_amd64.deb ... Unpacking nvidia-container-toolkit (1.18.1-1) over (1.18.1-1)... Setting up nvidia-container-toolkit (1.18.1-1)... root@gpu-node:~# apt install -y nvidia-container-toolkit Reading package lists... Done Building dependency tree... Done Reading state information... Done nvidia-container-toolkit is already the newest version (1.18.1-1). 0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded. root@gpu-node:~# nvidia-ctk runtime configure --runtime=docker INFO[0000] Config file does not exist;using empty config INFO[0000] Wrote updated config to /etc/docker/daemon.json INFO[0000] It is recommended that docker daemon be restarted. root@gpu-node:~# systemctl restart docker

6.修复可能缺失的系统依赖(可选)
某些基础依赖(如 libseccomp2)可能未安装,用以下命令自动修复:

sudo apt --fix-broken install -y 

离线下载需要的deb文件在文章开头可以自行下载

Read more

【C++---红黑树】在编程的浩瀚星空中,C++犹如一颗璀璨的星辰,以其独有的韵律和节奏,吟唱着智慧与创造的赞歌。它不仅仅是代码的堆砌,更是思维与艺术的交融,引领着无数追梦者,在数字的世界里翩翩起舞。

【C++---红黑树】在编程的浩瀚星空中,C++犹如一颗璀璨的星辰,以其独有的韵律和节奏,吟唱着智慧与创造的赞歌。它不仅仅是代码的堆砌,更是思维与艺术的交融,引领着无数追梦者,在数字的世界里翩翩起舞。

红黑树实现 * 1. 红⿊树的概念 * 1.1红黑树的规则 * 1.2路径问题 * 1.3 红⿊树如何确保最⻓路径不超过最短路径的2倍的? * 1.4 红⿊树的效率 * 2 红⿊树的实现 * 2.1 红黑树大致结构 * 首先:对于颜色来说,我们可以用枚举实现红和黑 * 其次:对于红黑树的结点,需具备以下结构(假设我们用pair<K,V>类型来实现红黑树): * 最后:在实现红黑树的整体结构 * 2.2 红黑树插入 * 2.2.1 红⿊树树插⼊⼀个值的⼤概过程 * 2.2.2

By Ne0inhk

c++新手 使用trae 搭建c++开发环境,提示不支持cppdbg

Trae IDE搭建C++开发环境完全指南:从0到1的实战经验分享 **【补充: 今天偶然翻到一篇文章,就在我解决Trae无法调试C++的问题之后,我发现的。贴出来,告诉大家为什么无法在trae中调试C++。 下面两篇文章的大致是说微软不让第三方使用官方开发的C++插件。 微软开始发力了,Trae用不了最新版的c++插件了 (https://zhuanlan.zhihu.com/p/1907744061080733167) trae插件安装官方文档 https://docs.trae.cn/ide/manage-extensions trae 的文档也侧面证实了这个消息,并以及给出了解决方案。】** 🔥 前言:从Java到C++的转型之旅 大家好,我是一名从Java转型C++的全栈开发者。最近尝试使用Trae IDE(基于VSCode开发的智能编程工具)搭建C++开发环境时,遇到了不少"坑"——从插件安装失败、配置文件报错到依赖库编译错误,踩了很多坑。

By Ne0inhk
【C++笔记】类与对象(进阶)

【C++笔记】类与对象(进阶)

前言:           在前文中,我们已经系统地学习了类与实例化对象的概念定义、语法结构和核心特性。本文将深入探讨类与对象的默认成员函数,其中以下四个方面最为关键:构造函数、拷贝构造函数、析构函数以及操作符重载。                  一、类的默认成员函数          定义:默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。                  在⼀个类中,如果我们不显示编写的情况下,编译器会默认⽣成以下4个重要的默认成员函数:          默认成员函数是C++中重要且复杂的知识点,需要从两个维度进行掌握:          ①了解编译器自动生成的默认函数行为及其适用性          ②当编译器自动生成的默认函数无法满足需求时,掌握自定义实现的方法                   二、构造函数          什么是构造函数?                  你可以把构造函数想象成产品的“出厂设置”,当你根据图纸(类)生产出一个新零件(对象)时,构造函数

By Ne0inhk
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)

JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)

目录 JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码) 一、什么时候该使用Array.map(),与forEach()的区别是什么? 1、什么时候该用Array.map() 2、Array.map()与Array.forEach()的区别 二、Array.map()的使用与技巧 1、基本语法 2、返回值 3、使用技巧 三、Array.map()的应用领域与实际案例 1、数据转换与应用函数 2、创建派生数组 3、链式调用 4、异步数据流处理 5、

By Ne0inhk