【摘要】 docker很好用,但是在GPU服务器上使用docker却比较复杂,需要一些技巧,下面将介绍一下在ubuntu16.04环境下的GPU-docker环境搭建过程。

第一步:

删除之前的nvidia驱动:sudo apt-get purge nvidia-*

安装nvidia-<version> 此处version为396

n

此处需先配置ppa源,速度较慢,慢慢等吧,这里还没想出好办法解决。

sudo add-apt-repository ppa:graphics-drivers/ppa

更新源,运行 sudo apt-get update

查询nvidia驱动可用版本,运行sudo apt-cache search nvidia-* 查询相应版本

安装驱动,运行 sudo apt-get install nvidia-396

第二步:

安装cuda9.0

地址:https://developer.nvidia.com/cuda-90-download-archive 选择相应版本,我这里用的ubuntu16.04 64x

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb

根据提示安装:

  1. `sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb`

  2. `sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub`

  3. `sudo apt-get update`

  4. `sudo apt-get install cuda`

这里有坑:遇到一些奇怪问题,总结如下:

(1)当遇到旧版本删除不够彻底时,会报

下载 file:/var/cuda-repo-9-1-local/./nvidia-387-dev_387.26-0ubuntu1_amd64.deb  无法找到文件 - /var/cuda-repo-9-1-local/./nvidia-387-dev_387.26-0ubuntu1_amd64.deb (2: 没有那个文件或目录) 失败

错误,此时是判断为key错误,之前的9-1版本卸载后,key也删掉了,

使用命令`sudo apt-key add /var/cuda-repo-9-1-local/7fa2af80.pub`解决

(2)内核存在旧版本时,报错

正在处理用于 ureadahead (0.100.0-19) 的触发器 ...

在处理时有错误发生:

initramfs-tools

E: Sub-process /usr/bin/dpkg returned an error code (1)

此时需要删除系统旧内核:

sudo vi /etc/default/grub

dpkg --get-selections|grep linux

选中旧版本,删除:

sudo apt-get remove linux-image-4.4.0-119-generic

再次查看版本:

看起来旧版本已经被删除了,

看一下系统内核版本:

uname -a

更新系统解决(initramfs-tools)问题:

sudo apt-get update

sudo apt-get upgrade

重启电脑:

sudo shutdown -r now

再次查看nvidia能够正常识别:

cat /proc/driver/nvidia/version

nvcc -V

nvidia-smi

(3)nvidia-smi报错

重装nvidia device

nvidia-smi

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

测试cuda(正确显示):

nvidia-smi

第三步

安装cudnn:

此处有坑,英伟达用国内ip登不上去,要翻墙登录后再下载,有些同学给了镜像,我这里下载的是:

libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb

用runtime library

安装步骤与cuda相似:

chmod 777 ibcudnn7_7.0.5.15-1+cuda9.0_amd64.deb

sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb

等待安装,就好了

第四步

tensorflow-gpu安装

pip install tensorflow-gpu

安装完成 tensorflow-gpu,可以测试一下

进入ipython(以下为测试正常启动gpu画面)

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!’)

sess = tf.Session()

接下来,要安装nvidia-docker了:

第五步

nvidia-docker

参考:https://github.com/NVIDIA/nvidia-docker

#如果你安装了nvidia-docker 1.0:我们需要删除它和所有现有的GPU容器

docker volume ls -q -f driver = nvidia-docker | xargs -r -I {} -n1 docker ps -q -a -f volume = {} | xargs -r docker rm -f

sudo apt-get purge -y nvidia-docker

#添加软件包仓库

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \

sudo apt-key add  -

distribution = $( ./ etc/os-release ; echo $ ID $ VERSION_ID )

curl -s -L https://nvidia.github.io/nvidia-docker/ $ distribution /nvidia-docker.list | \

sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update

#安装nvidia-docker2并重新加载Docker守护进程配置

sudo apt-get install -y nvidia-docker2

sudo pkill -SIGHUP dockerd

#使用最新官方CUDA图像

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

**下面是一些报错信息的修正方法:**

6.安装完成后,docker下载速度慢,报错:

error pulling image configuration: Gethttps://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/97/9782c71c14b7960794c9141f66721f7fff873d4de027b726c696ac1d54a99ce2/data?Expires=1524001324&Signature=EpbapfSa3ftVsuyhEHYwJjJILAzQhyf0iN4YQ1QpwXU9ITPlUhhIExWb6Efh~6ya3BkI44p3XvEI~SnrPPDyRYvsNRLbCc2qHhERV13J6BC7Ksylk54l75aKsigSHSFlmddvdR7Q1YszgKPEBFTAyMWzQ2GADaDKgMXjfN4W1Qk_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout

这是因为安装nvidia-docker会覆盖原来的/etc/docker/daemon.json文件

如果文件夹不存在:

sudo mkdir -p /etc/docker

打开 /etc/docker/daemon.json;

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://4x0vrhen.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

问题解决

7.在安装nvidia-docker2的时候,报错:

$ sudo apt-get install -y nvidia-docker2

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是

因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件

包尚未被创建或是它们已被从新到(Incoming)目录移出。

下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:

nvidia-docker2 : 依赖: docker-ce (= 18.03.0~ce-0~ubuntu) 但无法安装它 或

docker-ee (= 18.03.0~ee-0~ubuntu) 但无法安装它

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

首先打开清华源:

https://mirrors.tuna.tsinghua.edu.cn/

有两个镜像:docker和docker-ce

这里用docker-ce,因为nvidia-docker是基于docker-ce的:

最重要的几条命令:

删掉原来的docker:

sudo apt-get remove docker docker-enginedocker.io

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

这里注意了:

网上大部分的策略是:

curl -fsSLhttps://download.docker.com/linux/debian/gpg | sudo apt-key add -

这句话没办法运行,因为被墙掉了:

改用清华的gpg:curl -fsSLhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \

"deb [arch=amd64]https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \

$(lsb_release -cs) \

stable"

sudo apt-get update

安装docker-ce和nvidia-docker2:

sudo apt-get install docker-ce

sudo apt-get install -y nvidia-docker2

sudo pkill -SIGHUP dockerd

8.报如下错误时:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:385: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=9.0 --pid=24351 /var/lib/docker/aufs/mnt/085a2f9697d8b4dfbf269d413e032b46e948fa619e82f7a50b0dbac97e716be6]\\\\nnvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected\\\\n\\\"\"": unknown.

可能是nvidia driver/cuda/nvidia-docker2之间出了问题;

将三者彻底删除

apt-get purge nvidia driver-* cuda-* nvidia-docker2

apt-get update

重新安装cuda-9-0,会自动安装相应的nvidia driver-384 就用默认的版本

测试nvidia-smi通过

重新安装nvidia-docker2,

测试 docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi通过

问题解决

到这里,就完成了ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务器

来源:华为云社区  作者:Edison

ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务相关推荐

  1. ubuntu16.04 安装Opencv 3.1.0 import cv2 报错ImportError: No module named hdf5

    ubuntu16.04 安装Opencv 3.1.0  import cv2时报错: Traceback (most recent call last):   File "<stdin ...

  2. Ubuntu16.04安装CUDA9.0,显卡为低版本,非RTX2060、RTX2070、RTX2080等

    RTX2060显卡,需要安装 CUDA10.2,低版本不兼容 低版本显卡,可以安装CUDA9.0 Ubuntu16.04 RTX2060 安装CUDA10.2 参考:https://blog.csdn ...

  3. TVM学习(一)安装TVM Ubuntu16.04安装TVM0.8+clang-llvm12.0

    TVM安装 ****下载TVM安装包地址(0.8版本缺少文件vta-hw) Download 一.从github上下载TVM git clone --recursive https://github. ...

  4. ubuntu16.04安装cuda9——简明教程

    折腾了两三天总算是装好了,感想有二:官方教程才是爸爸:有些教程可以让你少活二十年. 首先把官方教程膜拜上:官方教程 官方教程中给出的安装方法有两种: Package Manager Installat ...

  5. 成功安装ubuntu16.04+cuda9.0+cuDNN7.0.5+caffe+digits(附错误汇总)

    成功安装ubuntu16.04+cuda9.0+cuDNN7.0.5+caffe+digits(附错误汇总) 本机硬件:双核i7 内存8G 显卡GTX070(不好意思,比较水) 安装顺序:依赖包--& ...

  6. Ubuntu16.04配置GPU驱动(GTX1060)+ CUDA9.0 + CUDNN7.0.5

    1.查看电脑是否有一个可以支持CUDA的GPU a.在终端输入命令行(ctrl+alt+T快捷进入终端): $ lspci | grep -i nvidia 查看电脑GPU信息如下: b.在终端输入命 ...

  7. 深度学习环境 Ubuntu16.04 LTS + GTX750Ti + CUDA9.0 + cudnn7.0 + python3.6.5 + tensorflow1.6搭建

    从0搭建Ubuntu深度学习环境 Ubuntu16.04 LTS + GTX750Ti + CUDA9.0 + cudnn7.0 + python3.6.5 + tensorflow1.6 之前仅仅在 ...

  8. ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7

    ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7 安装步骤: 1.安装cuda9.0:https://blog.csdn.net/zhuangwu116/articl ...

  9. 海思Hi3519AV100深度学习方案(一)darknet转caffmodel之caffe安装(基于Ubuntu16.04+python3.5+opencv3.4.0+cuda10.0)

    系列文章目录 海思Hi3519AV100深度学习方案(二)darknet转caffmodel之模型转换(yolov3+caffe+python3.5) 文章目录 系列文章目录 前言 一.系统已有环境检 ...

最新文章

  1. svn working copy locked
  2. 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
  3. 厉害了!一个Nvidia PC可运行四个Vives
  4. JDK1.5-1.7 比较二
  5. 手机web开发的感想
  6. python 计算过程图片_[Python图像处理]九.图像形态学相关运算
  7. 硬盘 光驱 跳线问题
  8. java连接unix_Java 使用 UnixSocket 调用 Docker API
  9. 各种Adapter的用法
  10. UVa10082 - WERTYU
  11. 第二章、使用变量、操作符和表达式
  12. c语言线程原理,线程池的原理和实现c语言
  13. 第十二届蓝桥杯题目和解答(C++B组)省赛
  14. 关于html的英文参考文献,英文参考文献标准格式
  15. 海康威视查询序列号 紫盘
  16. 如何报考华为网络工程师?
  17. 波士顿房价预测python_多元线性回归—波士顿房价预测(版本一)
  18. html css 边框不显示,css怎么设置不显示下边框?
  19. 我叫mt4 服务器维护,我叫MT48月22日停机维护公告 我叫MT4最新维护内容一览-游侠手游...
  20. android系统测试接口开发,Android开发者如何模拟接口获得自己想要的数据进行测试?...

热门文章

  1. 电控无碳小车需要单片机吗_电控无碳小车的设计及研究
  2. node配置ssl证书_在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)...
  3. 假设以带头结点的循环链表表示队列_数据结构·链表(C实现)
  4. c语言函数与指针,C语言指针与函数篇
  5. less入门及基础学习(建议有css基础)
  6. iOS 下如果存在UIScrollerView 使用UIScreenEdgePanGestureRecognizer实现侧滑效果失效的问题...
  7. 三个等于号===和两个等于号==的区别
  8. AS运行软件超时解决方法
  9. AMP、HMP、SMP
  10. 24点游戏java_使用java编写计算24点游戏程序