一、nvidia-docker简单介绍
nvidia-docker 英伟达在docker之上开发的一套可以使用GPU的docker ,查看前面的介绍即可知道。通过调用yum deplist nvidia-docker, 查看依赖项。
yum deplist nvidia-docker
具体每项依赖的功能,下文接着讲。
二、nvidia-docker安装
还是从安装开始,这里还是利用yum工具, 配置安装源,如果想把安装包保存起来,可修改yum配置,也可设置yum参数,--downloaddir, 前面有讲。注意安装nvidia-docker , 系统配置必须要在centos7,目前nvidia-docker 不支持centos6系列。
2.1 删除本机已安装的旧版本
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo yum remove nvidia-docker
2.2 配置Git上的源
curl -s -L https://nvidia.github.io/nvidia-docker/centos7/nvidia-docker.repo | \
sudo tee /etc/yum.repos.d/nvidia-docker.repo
2.3 安装 nvidia-docker
如果未指定 版本,默认安装nvidia-docker1
yum install -y nvidia-docker
需要安装nvidia-docker2 ,输入如下
yum install -y nvidia-docker2
如果安装版本2,则可以在/etc/docker/下看到 docker守护进行的配置文件 daemon.json,默认没有,版本1也没有配置文件。
2.4 调试
nvidia-docker run --ti --rm nvidia/cuda:9.0-base nvidia-smi
docker 首先从本地查找镜像,如果未找到,则从网络仓库上拉取,拉取完成后,则出现
至此,nvidia-docker 安装完成。
三、nvidia-docker的版本
随着英伟达对 nvidia-docker不断优化与更新,目前为止,已发布发布两个大的稳定版本。nvidia-docker 和 nvidia-docker2在linux下使用yum install -y nvidia-docker 或默认安装低版本的, 如果需要安装 高版本需要指定 nvidia-docker2 .
那么两个版本之间有何区别呢?
(1) 虽然nvidia-docker1 和nvidia-docker2 都依赖于docker, 但版本1是一个整体的可行性文件,内部实现连接docker容器与硬件GPU,版本2将整体部分拆分层一个基于docker的薄封装(cat /usr/bin/nvidia-docker 可查看)和一个插件(nvidia-container-runtime , 该插件直接实现一个 hook的功能,连接GPU硬件),在版本2 的nvidia-docker 可发现,实际上还是运行docker ,只是指定了 --runtime 参数,同时指定GPU设备,默认全部GPU设备。
(2)当需要运行一个使用GPU的容器时,版本1 必须用nvidia-docker run/create 启动, 版本二可通过设置 守护进行default-runtime参数可直接通过 docker run/create 直接启动GPU容器
docker的守护进程参数配置一般在文件 /etc/docker/daemon.json
cat /etc/docker/daemon.json
[root@localhost hadoop]# cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
[root@localhost hadoop]#
配置默认的插件环境 后
{
"default-runtime" : "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
配置完成后,重启docker
systemctl restart docker
然后调用 docker run/create 启动容器即可, 注意 前提需要安装 nvidia-container-runtime插件(安装完成后,可在/usr/bin 下发现文件 nvidia-container-runtime, 其实 配置文件的 nvidia path参数 实际为 、/usr/bin/nvidia-container-runtime 去掉路径,因为系统环境变量已设置)。
能够同时使用nvidia-docker1 和 nvidia-docker2 ? 其实是可以的,在安装nvidi-docker1后,只要下载插件(nvidia-container-runtime 和 nvidia-container-runtime-hook ),新建docker守护进程配置参数,重启docker, 然后nvidia-docker 启动容器时,指定--runtime nvidia 参数即可。