借助 NVIDIA Container Runtime,开发人员只需在创建容器期间注册一个新的运行时,即可将 NVIDIA GPU 暴露给容器中的应用程序。
目前官网上NVIDIA Container Runtime介绍如下
NVIDIA Container
Runtime 是一种 GPU 感知容器运行时,与 Docker、CRI-O 和其他流行容器技术使用的 Open Containers
Initiative (OCI) 规范兼容。 它简化了构建容器化 GPU 加速应用程序并将其部署到桌面、云或数据中心的过程。
借助 NVIDIA Container Runtime 支持的容器技术(如 Docker),开发人员可以将其 GPU 加速应用程序及其依赖项打包到一个包中,无论部署环境如何,都能保证在 NVIDIA GPU 上提供最佳性能。
在线安装方法如下:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && 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/$distribution/libnvidia-container.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
更新并下载安装 nvidia-docker2
apt-get install -y nvidia-docker2
然后重启docker
可以使用如下命令进行验证安装
docker run --rm nvidia/cuda:9.0-base nvidia-smi
如果有多张卡可以通过添加环境变量来挂载指定的卡到容器内部
-e NVIDIA_VISIBLE_DEVICES=0 #用所有卡使用all参数,多张卡可以使用逗号相隔
接着我们来介绍下离线安装,离线安装需要提前下载好四个deb的安装包
安装包的下载地址:https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
ubuntu18.04版本需要对应以下版本的包
libnvidia-container1_1.8.1-1_amd64.deb libnvidia-container-tools_1.8.1-1_amd64.deb nvidia-container-toolkit_1.8.1-1_amd64.deb nvidia-container-runtime_3.8.1-1_all.deb
上传到服务器,按照上述列表顺序进行安装
dpkg -i 包名
安装完成以后可以使用以下命令进行验证
/usr/bin/nvidia-container-runtime
然后重启下docker服务
如果需要在后面起的POD都需要使用GPU卡可以直接将docker默认的runc替换成nvidia的,主要修改/etc/docker/daemon.json文件,如果没有这个文件可以直接在这个路径上创建
cat /etc/docker/daemon.json { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }
然后重启docker服务就会生效。