当同一台电脑需要多个版本的cuda环境,并且需要使用docker时,可以考虑使用NVIDIA Container 运行时和NVIDIA在docker上发布的官方cuda容器,减少环境的配置成本。

NVIDIA Container 运行时库安装

nvidia-container-runtimenvidia-docker 均已停止维护,相关功能完全由 libnvidia-container 替代。具体可以看官网:Overview — NVIDIA Container Toolkit

当然因为网络问题,可以有国内镜像参考:NVIDIA Container 运行时库 - USTC Mirror Help。下面提供了三种方案:

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

2.国内镜像使用:

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://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

image-20250310171022288.webp

刷新源,并安装

sudo apt-get update
sudo apt-get install nvidia-container-toolkit

3.离线安装:

离线安装适用于完全没有网络的情况,通过直接从GitHub上下载编译好的包来进行安装,具体可见:NVIDIA/libnvidia-container: NVIDIA container runtime library

根据系统的不同选择对应的包,本文在写时,使用的是Ubuntu系统作为主环境,则直接使用deb包,如果是其他系统,参照对应的文件夹。

image-20250310172627313.webp

进入:libnvidia-container/stable/deb/amd64 at gh-pages · NVIDIA/libnvidia-container,找到与自己环境的对应的版本,目前最新的是1.17.4-1,全部下载:

image-20250310172128972.webp

列表为:

  • libnvidia-container1_1.17.4-1_amd64.deb
  • libnvidia-container-dev_1.17.4-1_amd64.deb
  • nvidia-container-toolkit_1.17.4-1_amd64.deb
  • libnvidia-container1-dbg_1.17.4-1_amd64.deb
  • libnvidia-container-tools_1.17.4-1_amd64.deb
  • nvidia-container-toolkit-base_1.17.4-1_amd64.deb

使用sudo dpkg -i libnvidia-container1-dbg_1.17.4-1_amd64.deb等等,安装上面的库,完成后则安装完毕。

nvidia-ctk --version可查看当前版本。

image-20250310173039687.webp

设置Docker默认运行时

默认的docker运行时是没有配置的,还需运行以下命令自动配置:

# 运行
sudo nvidia-ctk runtime configure --runtime=docker
# 配置文件 /etc/docker/daemon.json 会自动被修改
INFO[0000] Loading config from /etc/docker/daemon.json
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.

Docker镜像拉取并运行容器

nvidia提供了安装好cuda、cudnn的镜像,可以直接使用:nvidia/cuda Tags | Docker Hub

这里测试使用的是12.4的版本,则选择了以下镜像:

docker pull nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04

image-20250310170528839.webp

image-20250310173306545.webp

自然,容器里面的环境就是cuda 12.4。

image-20250310173418739.webp

到这里本次环境就捣鼓完了。

文章目录