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、更换国内镜像源:
- 清理旧配置信息:
sudo rm-f /etc/apt/sources.list.d/nvidia-*.list sudo rm-f /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg - 使用清华源,绕过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 - 只能从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 docker6.修复可能缺失的系统依赖(可选)
某些基础依赖(如 libseccomp2)可能未安装,用以下命令自动修复:
sudo apt --fix-broken install -y 离线下载需要的deb文件在文章开头可以自行下载