由于我要离线安装,所以我在联网状态下按照离线方式进行的安装,但下载是联网状态。
第一步:在联网状态下下载所需.deb包(在ubuntu 22.04.5上运行)
1. 添加 NVIDIA 仓库(仅用于下载,不安装)
设置 distribution 变量
distribution=(. /etc/os-release;echo ID$VERSION_ID)
添加 GPG 密钥 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
添加正确的仓库(使用通用 deb 路径)
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/amd64 /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
2. 创建一个目录用于存放 .deb 文件
mkdir -p ~/nvidia-offline && cd ~/nvidia-offline
3. 下载 nvidia-container-toolkit 及其所有依赖(不安装)
apt download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nvidia-container-toolkit | grep "^\w" | sort -u)
4. (可选)同时下载 GPG 公钥文件
cp /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg ./
5. 打包
tar -czvf nvidia-container-toolkit-offline.tar.gz *.deb nvidia-container-toolkit-keyring.gpg
第二步:将文件拷贝到离线 WSL2 环境
- 把
nvidia-container-toolkit-offline.tar.gz拷贝到 Windows 主机(例如C:\offline\) - 在 WSL2 中访问:
/mnt/c/offline/ - 解压:
mkdir -p ~/nvidia-offline
tar -xzvf /mnt/c/offline/nvidia-container-toolkit-offline.tar.gz -C ~/nvidia-offline
cd ~/nvidia-offline
第三步:在离线 Ubuntu (WSL2) 中安装
1. 安装 GPG 密钥(用于验证,虽离线但保持配置一致)
sudo cp nvidia-container-toolkit-keyring.gpg /usr/share/keyrings/
2. 安装所有 .deb 包(注意顺序:依赖先装)
sudo dpkg -i *.deb
如果提示依赖错误(因为顺序问题),运行:
sudo apt-get install -f
第四步:配置 Docker runtime
sudo nvidia-ctk runtime configure --runtime=docker
第五步:重启 Docker
之前我启用了systemd,就是添加到wsl.conf文件那个,所以:
sudo systemctl restart docker #看到 active (running)
第六步:离线测试
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi
这里报错了,显示:
Unable to find image 'nvidia/cuda:12.4.0-base-ubuntu22.04' locally
解决方案:
1.将 cuda-12.4-base.tar 拷贝到你的离线 WSL2 机器
例如放在 Windows 的 C:\offline\cuda-12.4-base.tar,则在 WSL2 中路径为:
/mnt/c/offline/cuda-12.4-base.tar
2.在离线 WSL2 中加载镜像:
docker load -i /mnt/c/offline/cuda-12.4-base.tar
#输出类似于:Loaded image: nvidia/cuda:12.4.0-base-ubuntu22.04
再次运行测试命令!!!
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi
成功显示 GPU 信息!!!!跟用nvidia-smi的一样