在Docker中使用官方cuda容器
当同一台电脑需要多个版本的cuda环境,并且需要使用docker时,可以考虑使用NVIDIA Container 运行时和NVIDIA在docker上发布的官方cuda容器,减少环境的配置成本。
NVIDIA Container 运行时库安装
nvidia-container-runtime 和 nvidia-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
刷新源,并安装
sudo apt-get update
sudo apt-get install nvidia-container-toolkit
3.离线安装:
离线安装适用于完全没有网络的情况,通过直接从GitHub上下载编译好的包来进行安装,具体可见:NVIDIA/libnvidia-container: NVIDIA container runtime library
根据系统的不同选择对应的包,本文在写时,使用的是Ubuntu系统作为主环境,则直接使用deb包,如果是其他系统,参照对应的文件夹。
进入:libnvidia-container/stable/deb/amd64 at gh-pages · NVIDIA/libnvidia-container,找到与自己环境的对应的版本,目前最新的是1.17.4-1
,全部下载:
列表为:
- 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
可查看当前版本。
设置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
自然,容器里面的环境就是cuda 12.4。
到这里本次环境就捣鼓完了。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。