• centos + docker搭建深度学习环境以及一些问题解决


    必须要说容器是一个很牛逼的思想!注意,是思想!也许docker有种种问题,但是不管docker能否茁壮地发展下去,未来这种方式的环境搭建一定会变得越来越流行!

    网上有很多这方面的教程,但大多数都不太好。。。。初学者很难上手看的一脸懵逼,而且很多自己都根本没验证过行不行,而且很多问题都没有提到!!因此我自己写一个这方面的教程,以后自己看起来方便,有缘的docker新手看到这篇文章也许能给你一些帮助。


    首先是安装docker

    我们在centos7上安装docker-ce,也就是社区版。这篇博客里面有centos和ubuntu的安装方式:https://www.linuxidc.com/Linux/2017-12/149576.htm

    我在这里再说一遍我的安装过程,注意!如果是root用户连接服务器在做这样的操作,那就不用加sudo了,加了也不识别。。。另外如果需要选择特定的docker版本也可以在那个博客里找到,但我个人觉得没啥必要,装最新版的就好了呗,有问题了再说hhhhh

    // 1. 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    // 2. 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    // 3. 更新并安装 Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    // 4. 开启Docker服务
    sudo service docker start
    // 5. 设置开机启动
    sudo systemctl docker enable

    如果你要装tensorflow-gpu,那么还要装个nvidia-docker2

    这个参考nvidia的github就行,为什么我非要下docker-ce版的呢,因为我用docker按照github的方法来做貌似没成功。。。也没深究。网址:https://github.com/NVIDIA/nvidia-docker

    一定要注意选择docker-ce那个版本。我这里也写一下。

    # If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
    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
    # Add the package repositories
    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
    # Install nvidia-docker2 and reload the Docker daemon configuration
    sudo yum install -y nvidia-docker2
    sudo pkill -SIGHUP dockerd
    # Test nvidia-smi with the latest official CUDA image
    docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

    安装nvidia驱动(如果你要用tf-gpu)

    前面你会发现安装好了之后,docker run –runtime=nvidia –rm nvidia/cuda:9.0-base nvidia-smi这句话没用,那是因为没装nvidia驱动,安装nvidia驱动方法我这里就不说了,比较简单,装好了之后本机上可以nvidia-smi查看显卡使用情况。

    下载tensorflow镜像

    这里直接看官网https://tensorflow.google.cn/install/docker

    有个问题啊。tensorflow/tensorflow:latest或者tensorflow/tensorflow:latest-gpu都是python2.7版本的环境!!!!我们都新时代的人了,用python3吧,不然在中文集上你会很烦的!!https://hub.docker.com/r/tensorflow/tensorflow/tags/这个网站上给出了一些镜像的名称。其实很简单在名字后面加个-py3就行了,就能把python3的环境拉下来了。

    启动镜像

    我用一个例子来说明吧:

    docker run --runtime=nvidia -t -v /home/xxx/docker/tf:/root/tf --name tf_py3 
    tensorflow/tensoflow:latest-py3 bash

    –runtime=nvidia 是nvidia-docker2的特点

    -v 数据卷  冒号前面是本机目录,冒号后面是docker内目录,目录内文件共享

    –name 容器名字,下次可以用名字打开,不用记住那个麻烦的序列

    tensorflow/tensoflow:latest-py3  对应镜像,如果要用gpu版的,加个-gpu

    bash  说明进入命令行界面!!!这个真的是要划重点了,网上很多centos7搭docker教程都是说,给一个序列,我在浏览器里输什么什么什么,我特么centos7没有图形界面啊!!!!!!!我不知道centos7是不是能用浏览器,貌似也是可以的,但我没有深究这个问题,反正就是很麻烦啊!什么鬼啊!!!加个bash就好了啊!

    好了,这样就可以了,开心。

    重新启动一个容器,以及字符集问题

    每次退出容易用exit。然后docker ps -a 可以看到所有的容器。

    输入命令 docker start xxxx
    
    docker attach xxxx

    就又进入了。

    这里会遇到一个字符集问题!就是不能输入中文也不能识别中文!

    输入locale -a 可以查看所有的字符集,发现是有C.UTF-8的。但是输入locale回车,发现LANG是空!就是不能用中文!咋办呢!

    我现在有一个解决办法,就是每次启动容器的时候用这句话!

    docker start xxxx
    
    docker exec -it xxxx env LANG=C.UTF-8 bash

    emmmm不是一个长久的办法!这样修改只是临时修改。要永久修改,需要在创建容器时在dockerfile中设置。但是要重新创建容器啊。。我都在容器里配了一些东西了。。有点烦,先不弄了,留着下次看看!

    ——–TODO!

    就先这样解决问题了,docker还是挺牛逼的!

    参考:

    https://www.linuxidc.com/Linux/2017-12/149576.htm

    https://m.linuxidc.com/Linux/2017-12/149578.htm

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

    https://tensorflow.google.cn/install/docker

  • 相关阅读:
    洛谷 题解 P5595 【【XR-4】歌唱比赛】
    洛谷 题解 CF1151D 【Stas and the Queue at the Buffet】
    洛谷 题解 CF299A 【Ksusha and Array】
    仙人掌找环
    2-SAT
    带花树
    帮我背单词
    csp2019退役祭
    P5284 [十二省联考2019]字符串问题 题解
    【网络流24题】魔术球问题
  • 原文地址:https://www.cnblogs.com/zhouxiaosong/p/11098695.html
Copyright © 2020-2023  润新知