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

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


首先是安装docker

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

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

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

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

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

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

  1. # If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
  2. docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
  3. sudo yum remove nvidia-docker
  4. # Add the package repositories
  5. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  6. curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
  7. sudo tee /etc/yum.repos.d/nvidia-docker.repo
  8. # Install nvidia-docker2 and reload the Docker daemon configuration
  9. sudo yum install -y nvidia-docker2
  10. sudo pkill -SIGHUP dockerd
  11. # Test nvidia-smi with the latest official CUDA image
  12. 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的环境拉下来了。

启动镜像

我用一个例子来说明吧:

  1. docker run --runtime=nvidia -t -v /home/xxx/docker/tf:/root/tf --name tf_py3 \
  2. 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 可以看到所有的容器。

  1. 输入命令 docker start xxxx
  2.  
  3. docker attach xxxx

就又进入了。

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

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

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

  1. docker start xxxx
  2.  
  3. 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

centos + docker搭建深度学习环境以及一些问题解决的更多相关文章

  1. 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境

    基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...

  2. 教你如何用Docker快速搭建深度学习环境

    本教程搭建集 Tensorflow.Keras.Coffe.PyTorch 等深度学习框架于一身的环境,及jupyter. 本教程使用nvidia-docker启动实例,通过本教程可以从一个全新的Ub ...

  3. ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】

    PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...

  4. ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度学习环境【学习笔记】【原创】

    平台信息:PC:ubuntu16.04.i5.七彩虹GTX1060显卡 作者:庄泽彬(欢迎转载,请注明作者) 说明:参考了网上的一堆的资料搭建了深度学习的开发环境,下班在宿舍折腾了好几个晚上才搞定,写 ...

  5. centos7 手把手从零搭建深度学习环境 (以TensorFlow2.0为例)

    目录 一. 搭建一套自己的深度学习平台 二. 安装系统 三. 安装NVIDA组件 四. 安装深度学习框架 TensorFlow 五. 配置远程访问 六. 验收 七. 福利(救命稻草

  6. ubuntu 17.04 下搭建深度学习环境

    .目前使用CPU即可,先不需要显卡配置 .使用pip3 安装深度学习框架 .要先安装pip3 #sudo apt install python3-pip https://blog.csdn.net/b ...

  7. 在服务器的docker里 装anacond3深度学习环境的全流程超基础

    ​ 背景: 实验室给我分配了一个服务器 已经装好了docker 和nvidi docker . 现在我的目标是创建我自己的docker 然后在我自己的docker里装上anaconda环境. 我以前从 ...

  8. linux系统下深度学习环境搭建和使用

    作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平. 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能随时使用笔记本电脑启 ...

  9. 服务器搭建远程docker深度学习环境

    服务器搭建远程docker深度学习环境 本文大部分内容参考知乎文章 Docker+PyCharm快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 Docker Docker ...

随机推荐

  1. 按键板的原理和实现--基于GPIO的按键板

    上篇介绍简单的ADC实现,需要IC提供一个额外的ADC.但出于IC成本的考虑,无法提供这个的ADC时,但提供了多个额外的GPIO(General Purpose Input Output:双向的:可以 ...

  2. [Visual Studio] - Unable to launch the IIS Express Web server 问题之解决

    背景 Visual Studio 2015 在 Debug 模式下调试失败. 错误 解决 删除解决方案下 .vs/config 文件夹,重新运行解决方案可进行调试. 参考资料 https://stac ...

  3. Java静态分派和动态分派

    前言 动态分派和静态分派机制是Java多态实现的原理.本文将针对这两种机制进行浅析. 静态分派 静态分派机制最典型的代码示例如下 void test() { Father father = new S ...

  4. Zuul【入门】

    1.创建eureka-server注册中心工程,配置跟之前讲eureka文章中一样,这里不再赘述 1.1.端口8888 2.创建一个demo-client工程 2.1.demo-client启动类跟之 ...

  5. Win + Manjaro 双系统、双硬盘安装方法 正确引导系统方法 黑屏解决方法(不瞎写,百分百有用)

    1. 前言 本教程只涉及 Win + Manjaro 双系统.双硬盘安装过程中的核心要点,不涉及具体步骤,不注意这些要点,安装之后是进不去 Manjaro 系统的. 详细的安装步骤网上已经有很多了,这 ...

  6. poj 1852&3684 题解

    poj 1852 3684 这两题思路相似就放在一起. 1852 题意 一块长为L长度单位的板子(从0开始)上有很多只蚂蚁,给出它们的位置,它们的方向不确定,速度为每秒一长度单位,当两只蚂蚁相遇的时候 ...

  7. 【计数DP】种树

    种树 题目描述 事实上,小X邀请两位奆老来的目的远不止是玩斗地主,主要是为了抓来苦力,替他的后花园种树……小X的后花园是环形的,他想在花园周围均匀地种上n棵树,但是奆老花园的土壤当然非同寻常,每个位置 ...

  8. High load average analyze

    https://www.tummy.com/articles/isolating-heavy-load/ https://www.tecmint.com/understand-linux-load-a ...

  9. 游记-NOI2019

    Day -18 被各路julao们轮番吊打-- Day -12 鸽子F发布了笔试题库,然而并没有 "MLE全场记零分" 的操作 Day -8 广二体育馆机器装配完毕,误闯开幕式表演 ...

  10. lock的等效代码

    1.lock的等效代码 在.NET的多线程程序中,经常会遇到lock关键字来控制同步,比如下列代码: private object o = new object(); public void Work ...