搭建nvidia-docker运行环境-Ubutu16.04

  docker一般服务于基于cpu的应用,而如果是gpu的话,就要用到nvidia-docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin封装之后调用docker。
  nvidia-docker的运行需要基于特定的硬件环境,首先需要安装nvidia driver,而docker容器并不直接支持nvidia gpu。为了解决这个问题,最早的处理办法是在容器内部,全部重新安装nvidia driver,然后通过设置相应的设备参数来启动container,然而这种办法是很脆弱的。因为宿主机的driver的版本必须完全匹配容器内的driver版本,这样导致docker image无法共享,很可能本地机器的不一致导致每台机器都需要去重复操作,这很大的违背了docker的设计之初。
  为了使docker image能方便的使用nvidia gpu,从而产生了nvidia-docker,由它来制作nvidia driver的image,这就要求在目标机器上启动container时,确保字符设备以及驱动文件已经被挂载。
  nvidia-docker-plugin是一个docker plugin,被用来帮助我们轻松部署container到gpu混合的环境下。类似一个守护进程,发现宿主机驱动文件以及gpu 设备,并且将这些挂载到来自docker守护进程的请求中。以此来支持docker gpu的使用。
  下面简单介绍下nvidia-docker的安装过程                        

1. GPU driver安装 
nvidia官网下载安装对应型号的显卡驱动:http://www.nvidia.com/Download/index.aspx?lang=en-us 
如果安装成功,在终端中输入  lspci | grep -i nvidia ,会显示自己的NVIDIA GPU版本信息
2. CUDA9.0安装 
下载cuda驱动https://developer.nvidia.com/cuda-toolkit 
step 1: sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
step 2: sudo apt-key add /var/cuda-repo-/7fa2af80.pub
Step 3: sudo apt-get update && sudo apt-get install cuda
验证CUDA安装之后,编译运行自带的sample可以验证CUDA是否成功安装:
搭建nvidia-docker运行环境-Ubutu16.04_第1张图片
3. docker安装 
step 1: 安装必要的一些系统工具
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安装 docker-ce
sudo apt-get -y update
sudo apt-get -y install docker-ce
验证
sudo service docker status (检查Docker服务的状态) 
sudo docker run hello-world (测试Docker安装是否成功)
搭建nvidia-docker运行环境-Ubutu16.04_第2张图片
4. nvidia-docker安装 及使用
step 1: 下载安装包
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
step 2: 安装
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
Step 3: 运行 nvidia¬-docker-plugin
sudo nvidia-docker-plugin s /var/lib/nvidia-docker/
Step 4: 启动nvidia¬-docker进程 
sudo systemctl start nvidia-docker
nvidia-docker-plugin是一个docker plugin,被用来帮助我们轻松部署container到gpu混合的环境下。类似一个守护进程,发现宿主机驱动文件以及gpu 设备,并且将这些挂载到来自docker守护进程的请求中。以此来支持docker gpu的使用
Test nvidia-smi
sudo nvidia-docker run nvidia/cuda nvidia-smi  
出现如下结果则表明nvidia-docker安装成功
搭建nvidia-docker运行环境-Ubutu16.04_第3张图片
5. docker run 使用CUDA设备
CUDA成功安装之后,会在/dev生成如下的设备,并准备好映射到docker的容器:  
搭建nvidia-docker运行环境-Ubutu16.04_第4张图片    
例如,下面这个‘docker run’命令会映射新安装的GPU设备到TensorFlow容器中。详细命令如下:
$ docker run --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidia1:/dev/nvidia1 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm -it -p 8888:8888 –privileged tflowgpu
例如,下面这个命令会将当前目录映射到docker容器,并且调用CUDA库来完成jpeg的编解码任务。详细命令如下:
sudo nvidia-docker run -v /home/gtx/work/huangxing/cuda/samples/7_CUDALibraries/jpegNPP:/outdata nvidia/cuda bash -c  "cd /outdata;./jpegNPP -input=data/Growth_of_cubic_bacteria_25x16.jpg -output=output.jpg"
cd /home/gtx/work/huangxing/cuda/samples/7_CUDALibraries/jpegNPP
sudo nvidia-docker run -v /home/gtx/work/huangxing/cuda/samples/7_CUDALibraries/jpegNPP:/outdata nvidia/cuda bash -c  "cd /outdata;./test.sh"
6.常用命令
sudo docker rm $(sudo docker ps -a -q) //删掉所有的container
sudo docker run -it ubuntu su - root bash -c “/usr/bin/X :0”
sudo docker run -v /home/gtx/work/huangxing:/outdata bash -c “/usr/bin/X :0”
sudo docker run ubuntu /bin/echo 'hellow'
sudo docker run -it ubuntu su - root bash -c /bin/bash
sudo nvidia-docker run -it -v /usr/bin/X:/outdata/X nvidia/cuda su - root -c '/bin/sh'
sudo nvidia-docker run -it -v /usr/lib/xorg/Xorg:/outdata/ Xorg nvidia/cuda su - root -c '/bin/sh'












你可能感兴趣的:(docker学习)