centos7.6(3.10) + CUDA10.0 + driver 410.48 安装docker-ce nvidia-docker + deepo(Mar 22, 2019) 深度学习环境

这篇博客写于2019年3月28日,大家在参考的时候注意时效性,不过万变不离其中,我只是想把这些个关系讲清楚,让大家少踩坑。Docker就是个容器,而deepo就是个镜像,镜像可以看做是类,而容器就是镜像的一个实例化,deepo镜像的环境很依赖系统的环境,但是相对来说,各个系统比较独立,比如在我的配置过程中,docker是可以启动服务的,但是deepo启动不了,是因为docker对于cuda9.0就可以,但是新版deepo需要cuda10.0,deepo大概有10个G,所以我并没有改动Docker和镜像,而是更新了系统的cuda和driver,deepo就可以运行了。否则重新装docker和下载镜像十分浪费时间。

参考两篇博客  https://blog.csdn.net/zt0518/article/details/88050663

                          https://blog.csdn.net/u014530702/article/details/86584041

Deepo的官方文档: https://github.com/ufoym/deepo?tdsourcetag=s_pctim_aiomsg

Docker的官方文档: https://docs.docker.com/install/linux/docker-ce/centos/

cudnn下载网址:https://developer.nvidia.com/rdp/cudnn-download

cuda tookit 下载地址:https://developer.nvidia.com/cuda-toolkit-archive

driver 下载地址:https://www.geforce.cn/drivers

查看内核版本 

[root@localhost ~]# uname -a
3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

一定要根据你的linux内核来配置环境

卸载掉之前的Docker和镜像

杀死所有运行容器

# docker kill $(docker ps -a -q)

删除所有容器
# docker rm $(docker ps -a -q)

删除所有镜像
# docker rmi $(docker images -q)

停止 docker 服务
# systemctl stop docker

删除存储目录
# rm -rf /etc/docker
# rm -rf /run/docker
# rm -rf /var/lib/dockershim
# rm -rf /var/lib/docker
如果发现删除不掉,需要先 umount,如

# umount /var/lib/docker/devicemapper
查看已安装的 docker 包

# yum list installed | grep docker

卸载相关包
# yum remove docker-engine docker-engine-selinux.noarch

安装selinux

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum install epel-release
sudo yum install container-selinux
 
# 不安装selinux会报错:
# Requires: container-selinux >= 2.9

开始安装Docker

# 安装相关的依赖包
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
 
# 设置仓库
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

查看docker-ce版本 

$ yum list docker-ce --showduplicates | sort -r
 
docker-ce.x86_64            3:18.09.4-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                    @docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                    docker-ce-stable

安装指定版本 注意docker-ce 和 nvidia-docker的兼容性

$ sudo yum install docker-ce-18.09.2 docker-ce-cli-18.09.2 containerd.io

启动docker

$ systemctl enable docker.service
$ systemctl start docker

验证docker安装是否成功 

$ sudo docker run hello-world

如果成功了,会输出如下结果:

安装nvidia-docker

# 如果已经安装过nvidia-docker1.0,那么先卸载。
$ 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

# 添加仓库
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
# 安装nvidia-docker2,重载Docker daemon configuration
$ sudo yum install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
# 测试一下是否安装成功
$ docker run --runtime=nvidia --rm nvidia/cuda:10.0-base nvidia-smi

这期间遇到的所有报错90%是环境版本兼容性问题,一定要找到docker和镜像对应的cuda和drive(报错里会给出需要的版本)

比如:

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 --device=0,1 --compute --utility --require=cuda>=9.0 --pid=1590 /var/lib/docker/overlay/59fd505d308da926ed463e79cf3e6b857c2e70911da40985c5673231cc934741/merged]\\nnvidia-container-cli: requirement error: unsatisfied condition: cuda >= 9.0\\n\”””: unknown.
 

还有yum -y update 更新了系统的安装包,但是不会更行驱动和cuda,会导致驱动报错,需要自己更新,更新过程参考

https://blog.csdn.net/qq_41493990/article/details/82183035

https://blog.csdn.net/xueshengke/article/details/78134991

cuda 和 driver 更新

官网下载 对应版本的 CUDA 和 driver 

如果我们用runfile安装,就要把之前rpm安装的driver找到并卸载了

rpm -qa | grep -i nvid | sort
yum  remove kmod-nvidia-*

lspci | grep -i nvidia

yum install gcc yum install gcc-c++

yum install kernel-devel yum install kernel-headers

需要用到 kernel-devel 和 kernel-headers 可以在以下网址找对应版本 

https://centos.pkgs.org/7/centos-x86_64/kernel-headers-3.10.0-957.el7.x86_64.rpm.html

http://rpm.pbone.net/index.php3

但是如果更行了yum,以上忽略

切换至安装包文件夹

./NVIDIA-Linux-x86_64-375.66.run

./cuda_8.0.61_375.26_linux.run 

这两个按步骤装就好,我是先装的驱动

配置/etc/profile 

export CUDA_HOME=/usr/local/cuda-10.0
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH="/usr/local/cuda-10.0/lib:${LD_LIBRARY_PATH}"

source /etc/profile

nvidia-smi


服务器可安装多个cuda,配置好profile就行。

下载ufoym/deepo

在下载镜像之前,配置一下docker的daemon.json文件

1,我们安装的docker默认在/var/lib/docker目录下,镜像也下载在这个目录下,但是系统盘一般空间小,所以我们要把它挂载到/home目录下,或者是你挂载的比较大的那个盘。 然后加入国内镜像加速,比不加的下载速度快10多倍。(:后面有空格)

[root@localhost ~]# cat /etc/docker/daemon.json
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": [],
            "graph": "/home/docker",      
            "registry-mirrors": ["https://registry.docker-cn.com"],
            "live-restore": true

        }
    }
}

这个也配置一下

vim /usr/lib/systemd/system/docker.service 

systemctl disable docker
systemctl enable docker
systecmtl daemon-reload
systemctl start docker

docker info

安装Deepo

安装好nvidia-docker后直接拉取Deepo镜像

docker pull ufoym/deepo

pull到本地后可以使用docker image list来查看目前的镜像列表。

docker run --runtime=nvidia -it ufoym/deepo bash

自此 deepo安装成功

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值