阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

安装使用NVIDIA-Docker– 可使用GPU的Docker容器

345次阅读
没有评论

共计 3427 个字符,预计需要花费 9 分钟才能阅读完成。

nvidia-docker是一个可以使用 GPUdockernvidia-docker是在 docker 上做了一层封装,通过 nvidia-docker-plugin,然后调用到docker 上,其最终实现的还是在 docker 的启动命令上携带一些必要的参数。因此在安装 nvidia-docker 之前,还是需要安装 docker 的。

docker一般都是使用基于 CPU 的应用,而如果是 GPU 的话,就需要安装特有的硬件环境,比如需要安装 nvidia driver。所以docker 容器并不直接支持 Nvidia GPU。为了解决这个问题,最早的处理办法是在容器内部,全部重新安装nvidia driver,然后通过设置相应的设备参数来启动container,然而这种办法是很脆弱的。因为宿主机的driver 的版本必须完全匹配容器内的 driver 版本,这样导致 docker image 无法共享,很可能本地机器的不一致导致每台机器都需要去重复操作,这很大的违背了 docker 的设计之初。

为了使 docker image 能很便利的使用 Nvidia GPU,从而产生了nvidia-docker,由它来制作nvidia driverimage,这就要求在目标机器上启动 container 时,确保字符设备以及驱动文件已经被挂载。

nvidia-docker-plugin是一个 docker plugin,被用来帮助我们轻松部署containerGPU混合的环境下。类似一个守护进程,发现宿主机驱动文件以及 GPU 设备,并且将这些挂载到来自docker 守护进程 的请求中。以此来支持 docker GPU 的使用。

需提前安装好的软件

docker

由于 nvidia docker 是基于 docker 基础之上运行的,因此需要安装原生的 docker。

1.12.6版本的 docker 安装可查看这篇文章:Docker 安装使用命令。http://www.linuxidc.com/Linux/2017-12/149575.htm

Docker CE版本可查看这篇文章:Docker CE 安装教程。http://www.linuxidc.com/Linux/2017-12/149576.htm

nvidia 显卡驱动

毫无疑问,要想使用 GPU,必须要安装显卡驱动,这样nvidia docker 才能正常运行。

显卡驱动的安装方式可查看这篇文章:CentOS 集成 GTX-1080Ti 显卡搭建深度学习环境全过程。http://www.linuxidc.com/Linux/2017-12/149577.htm

这篇文章中讲解了 CentOS 安装显卡搭建深度学习环境的全过程,显卡驱动就是其中一项工作,因此这里就不单独写了,这篇文章中有安装的过程。

安装 nvidia docker

1、下载 nvidia-docker.repo 文件,并将该文件输出到/etc/yum.repos.d/nvidia-docker.repo

curl -s -L https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo  

操作结果:

安装使用 NVIDIA-Docker-- 可使用 GPU 的 Docker 容器

2、查找可安装的 nvidia docker 版本

yum search --showduplicates nvidia-docker

运行上面的语句,会出现下面这张图中的信息,一路点击y

安装使用 NVIDIA-Docker-- 可使用 GPU 的 Docker 容器

最终输出结果是下面这张图:

安装使用 NVIDIA-Docker-- 可使用 GPU 的 Docker 容器

大家可以从中选择自己需要安装的 nvidia docker 版本,这里我安装的是 docker1.12.6版本的。因此我选择安装倒数第一个版本的nvidia docker

3、安装nvidia-docker

yum install nvidia-docker-1.0.1-1.x86_64

点击回车,系统就会安装 nvidia-docker,需要选yes\no 的地方输入y,再点击回车,最终安装成功。

运行 nvidia docker

1、运行docker

// 运行 docker
systemctl start docker
// 加入开机启动
systemctl enable docker
// 查看状态
systemctl status coker

2、运行nvidia-docker

systemctl start nvidia-docker
systemctl enable nvidia-docker
systemctl status nvidia-docker

nvidia-docker的操作命令与 docker 基本相同,所以操作起来没有什么障碍。

kubernetes 调用 GPU

yaml 文件配置:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-test
spec:
  volumes:
  - name: nvidia-driver
    hostPath:
      path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69
  - name: cgroup
    hostPath:
      path: /sys/fs/cgroup
  containers:
  - name: tensorflow
    image: tensorflow:0.11.0-gpu
    ports:
    - containerPort: 8000
    resources:
      limits:
        alpha.kubernetes.io/nvidia-gpu: 1
    volumeMounts:
    - name: nvidia-driver
      mountPath: /usr/local/nvidia/
      readOnly: true
    - name: cgroup
      mountPath: /sys/fs/cgroup
  1. alpha.kubernetes.io/nvidia-gpu: 1:表示只使用 1 块 gpu

  2. path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69:宿主机 driver 位置,安装了 nvidia-docker 之后有的,当然需要保证宿主机 nvidia driver 是已经安装 ok 的,应该是安装了 nvidia-docker 之后,会发现宿主机的driver,然后映射到此。

  3. path: /sys/fs/cgroup:挂载该目录也是为了识别显卡,使容器内部能够使用宿主机显卡。

  4. volumeMounts:将宿主机目录挂载到容器内部,这个标签下的配置项就是要把宿主机目录挂载到容器内部的那个目录,通过 name 标识。

通过这些目录挂载配置,启动 pod 之后,容器就能够正常识别 GPU 并进行工作了。

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 16.04 服务器上配置使用 Docker  http://www.linuxidc.com/Linux/2017-06/145176.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm 

Docker 创建基础镜像  http://www.linuxidc.com/Linux/2017-05/144112.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm 

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm 

使用 Docker 分分钟启动常用应用  http://www.linuxidc.com/Linux/2017-04/142649.htm 

Ubuntu 16.04 下 Docker 修改配置文件不生效解决办法  http://www.linuxidc.com/Linux/2017-05/143862.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149578.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3427字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中