安装NVIDIA Container Toolkit工具,支持docker使用GPU
目录
1.NVIDIA Container Toolkit 安装1.1 nvidia-docker安装1.2 验证1.2.1 验证安装1.2.2 额外补充
1.NVIDIA Container Toolkit 安装
1.1 nvidia-docker安装
NVIDIA/nvidia-docker
Installing the NVIDIA Container Toolkit - 官方文档
此处使用官方文档所述的apt安装方法(Installing with Apt),其余方法见官方文档:
step1:Configure the production repository:
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
Optionally, configure the repository to use experimental packages:
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
step2:Update the packages list from the repository:
sudo apt-get update
step3:Install the NVIDIA Container Toolkit packages:
sudo apt-get install -y nvidia-container-toolkit
1.2 验证
1.2.1 验证安装
优秀参考文章
1.Docker和Nvidia-docker的安装、测试,及运行GUI应用
启动Docker:
systemctl start dockersystemctl enable docker
检查是否安装成功: sudo docker version
nvidia给的测试镜像nvidia-docker2,
安装nvidia-docker,重启docker服务:
sudo apt-get install nvidia-docker2
sudo systemctl restart docker
载入一个镜像测试:
sudo docker pull nvidia/cuda:10.0-base nvidia-smi
如果出现下图,则nvidia-docker安装成功:
创建容器:
# 基于cuda10.0的镜像创建一个名为Shrimp_ball的容器sudo docker run -idt --name Shrimp_ball --gpus all --shm-size 16G nvidia/cuda:10.0-base
这里有三个重要的参数:
–name: 容器的名称
–gpus: gpu编号,可以通过nvidia-smi查询,不启用gpu可以不写该参数,启用所有gpu可以用all
–shm-size: 共享内存的大小,即为容器中内存的大小,可按照自己的需求进行调节
新建一个容器测试一下:
sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:11.0-base
其中最后的参数是nvidia/cuda:11.0-base是根据我的cuda版本设置的参数,具体可以根据工作站主机的cuda版本进行修改,版本查看旧用nvcc -V查看。
进入容器之后可以跑一下nvidia-smi查看到显卡的驱动,然后就可以在docker里正常使用GPU了。
Error response from daemon: manifest for nvidia/cuda:latest not found: manifest unknown: manifest unknown 错误解决Docker Hub中的CUDA, CUDAGL和OPENGL镜像已经弃用"latest"标签,可以直接使用:docker pull nvidia/cuda 或者在Dockerfile中指定:FROM nvidia/cuda:latest 都会出现Error response from daemon: manifest for nvidia/cuda:latest not found: manifest unknown: manifest unknown
解决方法:
在supported-tags中找到与自己系统对应的cuda版本,并将nvidia/cuda:latest中的latest改成对应的版本
如:Error response from daemon
优秀参考资料:
1.docker学习笔记(9):nvidia-docker安装、部署与使用
1.2.2 额外补充
拉取Nvidia/cuda官方镜像:docker pull nvidia/cuda:10.0-base
NVIDIA官方提供的docker镜像nvidia/cuda,里面已经编译安装了cuda,但需完善并安装cudnn.注意:这里的cuda版本要跟宿主机显卡驱动匹配.(本次安装的版本是cuda10.0)
生成容器:nvidia-docker run -it --runtime=nvidia -v /宿主机绝对路径目录:/容器内目录 --name 容器名 镜像名 /bin/bash
创建镜像完毕后,进入镜像,输入nvidia-smi,如果输出下图中绿框内的指令,则表明自己的cuda容器创建成功。