Ubuntu + Docker + NVIDIA-docker + Deepo环境搭建、基本操作以及相关教程分享

简介:

    Deepo是一个几乎包含所有流行深度学习框架的Docker映像,拥有一个完整的可复制的深度学习研究环境。它涵盖了当前最流行的深度学习框架:
theano,tensorflow,sonnet,pytorch,keras,lasagne,mxnet,cntk,chainer,caffe,torch。

1、Ubuntu版本

    使用的是ubuntu17.0.4

2、Docker的安装步骤

    建议大家都看一下docker的官方网站,里面说的很详细。点击打开链接

步骤一:版本选择

Docker有两个版本:Community Edition (CE)和Enterprise Edition (EE)。
Docker Community Edition (CE)是开发人员和小型团队的理想选择,他们希望从Docker开始,并尝试使用基于容器的应用程序。Docker CE有两个更新通道,:稳定每季度给你可靠的更新。Edge每月提供新功能。有关Docker CE的更多信息,请参见Docker Community Edition。

Docker Enterprise Edition (EE)是为企业开发和IT团队设计的,他们构建、交付和运行在规模生产中的关键应用程序。有关Docker EE的更多信息,包括购买选项,请参阅Docker Enterprise Edition。

详情:点击打开链接

我选择安装ce

步骤二:安装仓库

1)更新apt软件包索引。

$ sudo apt-get update

2)安装包时,允许apt在HTTPS上使用存储库:

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

3)添加Docker的官方GPG密钥:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

通过搜索指纹的最后8个字符,确认你现在已经拥有了指纹编号9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88的密钥。

$ sudo apt-key fingerprint 0EBFCD88

pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) 
sub   4096R/F273FCD8 2017-02-22
使用下面的命令来设置稳定的存储库。您总是需要稳定的存储库,即使您希望从边缘或测试存储库安装构建。要添加边缘或测试存储库,请在下面的命令中添加单词edge或test(或两者)。

注意:下面的lsb_release -cs子命令将返回您的Ubuntu发行版的名称,比如xenial。有时,在像Linux Mint这样的发行版中,您可能需要将$(lsb_release -cs)更改为您的父Ubuntu发行版。例如,如果您使用的是Linux Mint Rafaela,您可以使用trusty。

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

步骤三、安装docker

1)更新apt软件包索引。

$ sudo apt-get update

2)安装最新版本的Docker CE,或进入下一个步骤安装特定版本。替换了Docker的任何现有安装。

sudo apt-get install docker-ce

    需要安装多个docker存储库吗?安装了多个存储库,更新的时候可能带来不稳定的因素。

4)在系统上,您应该安装一个特定版本的Docker CE,而不是总是使用最新版本。下面命令,列出可用的版本供您安装。

$ apt-cache madison docker-ce

对上面输出的版本介绍:列表的内容取决于启用了哪些存储库。选择要安装的版本。第二列是版本的字符串。第三列是存储库名称,它指示包来自哪个存储库,并通过扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名称,并通过等号(=)将它们分开:使用如下的命令(VERSION是您要安装的版本信息)

$ sudo apt-get install docker-ce=VERSION

5)通过运行hello-world来验证是不是安装成功了

$ sudo docker run hello-world

这个命令下载一个测试图像并在容器中运行。容器运行时,会打印一条信息消息并退出。

Docker CE已安装并正在运行。该docker组已创建,但未添加用户。您需要使用sudo运行Docker命令。继续Linux postinstall以允许非特权用户运行Docker命令以及其他可选的配置步骤。

要创建docker组并添加您的用户:

6)创建docker组

$ sudo groupadd docker

7)将您的用户添加到docker组中。

$ sudo usermod -aG docker $USER

8)注销并且重新登陆,验证您的组成员资格,如果是虚拟机上的话,就重启一下。

9)验证您可以运行docker不使用sudo命令

$ docker run hello-world

10)docker已经安装成功了,现在分享一下docker的使用。

docker容器的使用,菜鸟教程

docker中文教程

docker问答录

3、Nvidia-docker安装

简介:NVIDIA-Docker-- 可使用GPU的Docker容器

想要驱动GPU,就需要安装GPU驱动(我是的GTX1080ti),可能有时候通过NVIDIA官网下载显卡驱动比较慢,我们可以添加ppa库,通过ppa安装显卡驱动,这步可有可无,用户自行决定,输入代码如下:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get install nvidia-384

安装好了,重启系统,使用下面命令,可以查看GPU

nvidia-smi

看了很多人安装驱动出现了很多的问题,我貌似这两步就弄好了。现在正式开始nvidia-docker的安装。

步骤一:按照这里的说明安装

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

步骤二:安装nvidia-docker2软件包并重新加载Docker守护程序配置

sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd

中国官方镜像加速

步骤三:docker容器使用cuda加速

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

4、deepo安装

deepo简介:一系列的Docker图像(以及它们的生成器)可以让您快速建立您的深度学习研究环境。

Deepo是一组Docker图像。
允许您快速建立您的深度学习研究环境。
支持几乎所有常用的深度学习框架。
支持GPU加速(CUDA和cuDNN),也适用于cpu模式。
适用于Linux (CPU版本/GPU版本)、Windows (CPU版本)和OS X (CPU版本)
以及他们的Dockerfile生成器。
允许您使用legolike模块自定义您自己的环境。
自动地解决对您的依赖关系。

https://github.com/ufoym/deepo

安装

步骤一:安装Docker and nvidia-docker.(上面也有教程,官网也有很详细的教程)

步骤二 :从Docker hub上获取所有的镜像(此过程在下载镜像,速度有点慢,需要等待)

docker pull ufoym/deepo

步骤三:使Deepo能够从docker容器中使用GPU

nvidia-docker run --rm ufoym/deepo nvidia-smi

步骤四:交互式shell,帮助你创建一个容器(创建这个容器,你退出之后,容器依然存在)

nvidia-docker run -it ufoym/deepo bash

Deepo的入门介绍以及基本的操作

如果你对这个东西不是很了解的,可以看看:

1、打开终端,输入命令:docker,有很多的命令以及命令解释

2、查看本地所有镜像,命令:docker images

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

    • REPOSITORY:表示镜像的仓库源

    • TAG:镜像的标签

    • IMAGE ID:镜像ID

    • CREATED:镜像创建时间

    • SIZE:镜像大小

3、Docker的镜像称为image,容器称为container。对于Docker来说,image是静态的,类似于操作系统快照,而container则是动态的,是image的运行实例。比如,有一个image名称为ubuntu,那么比如现在我们启动这个image的container并且进入到这个container的bash命令行中:使用本地的镜像通过交互式shell创建容器,命令:

docker run -it --name test ufoym/deepo:all-py36-jupyter /bin/bash

--name test表示容器的名称为test,ufoym/deepo命令docker images中的repository的值,all-py36-jupyter表示tag镜像标签

4、退出交互式容器,命令:exit

5、查看已经创建所有的容器,命令:docker ps  -a

6、强制删除创建名字为test的容器,命令:docker rm test

7、后台启动名称为softbei的容器,命令:docker start softbei

8、进入softbei容器的终端并且退出时,容器继续运行,命令:docker exec -it softbei /bin/bash

9、实时现实GPU的用量,命令:watch -n 1 nvidia-smi

小结:

这个东西真的好。

你可能感兴趣的:(linux,docker,虚拟容器,机器学习,deepo)