【NVIDIA Container Toolkit】原理性通过官方Github仓库下载deb包的方式安装NVIDIA Container Toolkit / NVIDIA Docker

🚀 本文先拆解官方方法安装NVIDIA Container Toolkit的原理以及可能遇到的问题,接着依据此,提出可行的替代方案。注意本文的前提是docker本身可正常运行。

NVIDIA将nvidia docker的项目迁移到了nvidia container toolkit, 目前安装nvidia container toolkit即可。


🌔01
官方方法原理

⭐️ 本章节只是讲解nvidia官方的安装教程,不涉及本文实际的安装。(如果按照官方方法可以成功安装,想必你也不必查看我这篇博客了😂)

NVIDIA Container Toolkit的官方安装教程见链接: NVIDIA Container Toolkit

整理下来主要有以下三个部分:

# 第一部分,导入公钥并导入第三方源
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
# 第二部分,更新apt源(依赖于第一部分的源是否添加正确)
sudo apt-get update
# 第三部分,安装
sudo apt-get install -y nvidia-container-toolkit

这里涉及的关键原理主要是第一部分,将之拆解如下:
① {\color{#E16B8C}{①}} 从https://nvidia.github.io/libnvidia-container/gpgkey下载公钥,并以二进制形式写入/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg。

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \

在具体安装时可以查看这个文件内部是否为空,如果不为空,则公钥保存成功:
在这里插入图片描述

② {\color{#E16B8C}{②}} 从https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list下载软件源,并结合上一步的公钥信息nvidia-container-toolkit-keyring.gpg加以修改,然后写入/etc/apt/sources.list.d/nvidia-container-toolkit.list。

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

在具体安装时可以查看这个文件内部是否为空,如果不为空,则源保存成功:
在这里插入图片描述

如果你有代理工具,能够科学上网,那么第一部分的 ①② {\color{#E16B8C}{①②}} ①②依据官方教程就可以正常运行;如果你没有条件,直接运行命令会报错,不用想就是因为你没法科学上网,这时可以手动访问上述提及的网址(不用代理也行),手动将公钥和源写入上述提及的文件。

😰但是我遇到的问题是,就算第一部分的 ①② {\color{#E16B8C}{①②}} ①②都运行正常,第二部分也会报错,类似这样,说源位置不存在Release file。
在这里插入图片描述
那这一步骤如何解决呢?见第二章节。


🌔02
可行替代方案

🤔从本质上来说,官方教程只是通过apt源的方式转接到nvidia的官方仓库去下载符合你操作系统的deb软件包,那么我们何不直接到nvidia的github官方仓库下载呢?

参考官方教程中的源的表述($(ARCH)表示操作系统架构, e.g. amd64):

https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /

我们直接访问:https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable/deb
在这里插入图片描述
如果操作系统是ubuntu,则可以选择amd64文件夹,我们可以看到这里有许多的软件包,我们只需要下载并安装与你的环境相适配的版本的软件包即可(版本选择很重要,版本不对可能进不去docker容器,也可能docker容器内部跑深度学习会报错,主要参考你的nvidia驱动版本和docker版本是否支持)。
在这里插入图片描述
可以尝试用命令行下载安装(如果不行就手动装,装哪些参考下面的命令行),以nvidia-container-toolkit 1.17.0为例:

# 创建下载目录
mkdir ~/nvidia-container-toolkit-debs
cd ~/nvidia-container-toolkit-debs

# 下载相关包(按依赖顺序)
wget https://github.com/NVIDIA/libnvidia-container/raw/gh-pages/stable/deb/amd64/libnvidia-container1_1.17.0-1_amd64.deb
wget https://github.com/NVIDIA/libnvidia-container/raw/gh-pages/stable/deb/amd64/libnvidia-container-tools_1.17.0-1_amd64.deb
wget https://github.com/NVIDIA/libnvidia-container/raw/gh-pages/stable/deb/amd64/nvidia-container-toolkit-base_1.17.0-1_amd64.deb
wget https://github.com/NVIDIA/libnvidia-container/raw/gh-pages/stable/deb/amd64/nvidia-container-toolkit_1.17.0-1_amd64.deb

# 按顺序安装
sudo dpkg -i libnvidia-container1_1.17.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.17.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit-base_1.17.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit_1.17.0-1_amd64.deb

# (可选)如果有依赖问题,运行
sudo apt-get install -f

安装完毕后,接下来,配置Docker:

# 配置 Docker 使用 NVIDIA 运行时
sudo nvidia-ctk runtime configure --runtime=docker

# 重启 Docker 守护进程
sudo systemctl restart docker

验证安装(要使用–gpus参数,使用–rm是指在创建的容器内运行命令后就删除容器):

sudo docker run --rm --gpus all [your_image:tag] nvidia-smi

如果出现了以下界面就说明安装成功了。
在这里插入图片描述

### NVIDIA Container Toolkit 在 Windows 上的安装 目前官方并不支持直接在 Windows 操作系统上安装 NVIDIA Container Toolkit[^1]。该工具集主要设计用于 Linux 平台,因为其依赖于特定的内核模块以及驱动程序来实现 GPU 的容器化操作。 对于希望在 Windows 中利用 DockerNvidia GPU 功能的开发者来说,推荐的方式是在 Windows Subsystem for Linux (WSL 2) 下运行 Ubuntu 或其他受支持的 Linux 发行版,并在此环境中配置 DockerNVIDIA Container Toolkit[^2]。 具体步骤如下: #### 设置 WSL 2 和 Ubuntu 确保已启用 WSL 2 特安装了最新的适用于 Linux 的 Windows 更新。接着通过 Microsoft Store 获取并设置好 Ubuntu 环境。 #### 配置 Docker Desktop on Windows 下载安装最新版本的 Docker Desktop,在启动时勾选 "Use the WSL 2 based engine" 选项以允许 Docker 使用 WSL 2 后端引擎。 #### 安装 NVIDIA Drivers and CUDA Toolchain within WSL 2 按照官方文档指导完成显卡驱动和 CUDA 工具链的部署工作,这通常涉及到添加 APT 存储库、更新软件列表并执行相应的 apt-get install 命令。 #### 安装 NVIDIA Container Toolkit inside WSL 2 最后一步就是遵循标准流程安装 NVIDIA Container Toolkit 到 WSL 2 实例中去,从而使得基于此环境构建的应用能够访问到主机上的 GPU 资源。 ```bash distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's/# deb/deb/' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值