docker相当于一个容器,其可以根据你所需要的运行环境构建相应的运行环境,此时各个环境之间彼此隔离,就不会存在在需要跑一个新的代码的时候破坏原来跑的代码所需要的环境,各个环境之间彼此隔离开,好像一个个容器将其隔离开一样

由于docker只针对在CPU上面跑的情况,对于需要在GPU上面运行的服务器,其提供了一个nvidia-docker

sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP docker

对于怎么在服务器子账户上面搭建nvidia-docker,在百度上个个地方讲的都不一样,因此,在谷歌上查阅了相关的文档之后,将在服务器子账户上搭建nvidia-docker的方法陈列如下

简单的来说,要安装nvidia-docker总共的步骤分为三步:

Install NVIDIA driver
Install docker
Install nvidia-docker
  • 安装显卡驱动

对于我们的服务器甚至大多数服务器来说,这一步都是在装机的时候必备的,因此这一步我们直接忽略,具体问题可以百度

  • 安装docker

docker有两种可用的版本:社区办(CE)和企业版(EE),正如英伟达显卡驱动器,我们需要知道linux版本来选择合适的安装文件,以下的安装版本是在ubuntu16.04上面安装社区版

安装docker步骤如下

  • 首先,我们需要将存在于电脑上的老的版本的docker移除,如果你可以确定这是你第一次在你的机器上安装docker,那么这一步就可以省略,否则你最好执行一下以下的命令
sudo apt-get remove docker docker-engine docker.io

如果docker没有在你的机器上安装,那么apt-get将会告诉你这个问题

  • 接下来,我们将安装docker,推荐从repository(知识库)里面安装docker,这样可以实现当新的版本出现的时候,我们也可以从repository里面很容易的获得更新

我们为了从repository里面安装docker,我们需要首先建立docker repository,通常,我们需要更新apt包

  • 更新apt package index
sudo apt-get update
  • 然后,安装软件包以允许apt通过HTTP
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
  • 接下来,加入docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo pt-key add -
  • 验证下列指令输出的是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
sudo apt-key fingerprint 0EBFCD88
  • 接下来,通过运行下面的指令告诉apt用stable repository
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
(usb_release -cs) \
stable"
  • 在这里,我们就已经完成了对知识库的建立,接下来,我们将更新apt package index并且安装Docker CE
sudo apt-get update && apt-get install docker-ce

然后这一步过后就是,等待安装等待安装,会下载很久,继续等待

  • 安装完docker之后,当然我们需要验证一下我们所安装的是否成功

利用著名的hello-world 镜像来测验我们安装的docker是否成功

sudo docker run hello-world

如果得到如下的界面,证明docker安装成功

  • 安装nvidia-docker

在下一步,我们将通过安装nvidia-docker来完成我们的工作,其是在docker中的一个plug来帮助容器在GPU环境下的使用

首先,我们需要将已有的nvidia-docker移除

docker volume ls -q -f driver=nvidia-docker |xargs -r -I{} -n1 docker ps -q -a -f volum={} | xargs -r docker
sudo apt-get purge -y nvidia-docker

以前没有安装过的话这一步可以直接跳过

接下来,我们将加入必要的repository,然后更新apt package index

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-docker

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

安装成功之后,对我们所安装的nvidia-docker进行验证

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

如果这是你第一次用如下的指令,你可以看到docker正在尝试下载一些东西

到这里,整个安装步骤全部结束了

号外!在有一次服务器显卡崩了之后,重新安装显卡驱动之后,竟然“惊喜”地发现我的nvidia-docker环境竟然不在了,但是输入

docker version

时显示docker是存在的,因此就只需要按照前面的安装步骤安装nvidia-docker就可以,安装成功之后会发现之前根据dockerfile搭建的实验环境仍然是在的,万幸!

在linux服务器上搭建nvidia-docker环境的更多相关文章

  1. Linux服务器上搭建web项目环境

    一.下载并安装jdk 去官网下载linux系统上jdk的安装包jdk-8u181-linux-x64.tar.gz,在Linux的/usr目录下新建文件夹java,可以使用命令:cd /usr    ...

  2. 阿里云CentOS Linux服务器上搭建邮件服务器遇到的问题

    参考文章: 阿里云CentOS Linux服务器上用postfix搭建邮件服务器 Linux系统下邮件服务器的搭建(Postfix+Dovecot) 本来想自己搭建邮件服务器,但是看到一篇资料表示阿里 ...

  3. 在linux服务器上搭建相对安全的FTP服务器

    一.如何在Linux服务器上安装vsftp不在多说,直接介绍如何进行安全性配置: 二.编辑vsftp.conf文件 关键配置项如下: anonymous_enable=NO /禁止匿名用户登录 loc ...

  4. Linux服务器上搭建codis集群之——安装前环境准备

    codis是redis的分布式集群模式,由豌豆荚开源,本文简单记录一下它的集群搭建方法. 首先介绍一下我的实验环境.三台配置相同的虚拟机, [root@test ~]# ip a|grep -w &q ...

  5. Linux服务器上搭建测试环境(war包+tomcat)

    悟空CRM项目环境部署(Java war项目) 在/root目录下创建一个文件夹(名字自取). ls命令查看一下是否创建成功,看到了新建的文件夹说明创建成功. tomcat和war包的准备:可以使用X ...

  6. 在linux服务器上搭建Struts2项目运行环境

    服务器上工作: 首先要先装java https://www.cnblogs.com/lamp01/p/8932740.html 然后装好tomcat https://www.cnblogs.com/y ...

  7. 在 Linux 服务器上搭建和配置 Hadoop 集群

    实验条件:3台centos服务器,jdk版本1.8.0,Hadoop 版本2.8.0 注:hadoop安装和搭建过程中都是在用户lb的home目录下,master的主机名为host98,slave的主 ...

  8. 使用Samba在Linux服务器上搭建共享文件服务

    最近我们的小团队需要在服务器上共分出一个共享文件夹用于大家存放公共的资源文档, 大家想啊,这肯定很简单呀,在Windows下面只要创建相关的windows account,共享某个文件夹,把读/写权限 ...

  9. 一行代码在Linux服务器上搭建基于.Net Core的博客

    如果你有一台Linux服务器(CentOS7+ 或者 Ubuntu 16.04+)可以使用以下命令快速搭建一个博客. curl http://cdn.zkeasoft.com/zkeacms-blog ...

随机推荐

  1. 介绍Dynamics 365的OrgDBOrgSettings工具

    摘要: 微软动态CRM专家罗勇 ,回复320或者20190320可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 有时候会需要 ...

  2. 自动化测试 Appium之Python运行环境搭建 Part2

    Appium之Python运行环境搭建 Part2 by:授客 QQ:1033553122 实践环境 参见 Appium之Python运行环境搭建 Part1 环境部署 1.安装Android SDK ...

  3. 新坑:c#弄微信公众号

    微信公众号作为一个平台级别的产品,对商业应用来说,有很大的吸引力.如何让公众号更好的吸粉?靠内容不是一般小商户可以做到的,那是网红自媒体的强项.一般商户要怎么突围?那就是提供实用,有意义的功能给粉丝. ...

  4. 神经网络MPLClassifier分类

    代码: # -*- coding: utf-8 -*- """ Created on Fri Aug 24 14:38:56 2018 @author: zhen &qu ...

  5. Rx响应式编程

    RX响应式编程就是异步数据流编程:单击事件或事件总线;(观察者模式) 有一堆的函数能够创建流,也能将任何流-,也能将任何流进行组合和过滤.一个流能够作为另一个流的输入,能够将两个流合并,可以通过过滤流 ...

  6. vue(7)—— 组件化开发 — webpack(1)

    引子 在研究完前面的vue开发后,其实已经可以自己开发点东西了,靠前面的指令集,组件,还有vue-router,还有异步请求这些知识点,是完全可以开发出来的,完全可以达到时下前后端分离的效果. 但是, ...

  7. SQLServer之数据库行锁

    行锁使用注意事项 1.ROWLOCK行级锁确保在用户取得被更新的行,到该行进行更新,这段时间内不被其它用户所修改.因而行级锁即可保证数据的一致性,又能提高数据操作的并发性. 2.ROWLOCK告诉SQ ...

  8. [转]Lua和Lua JIT及优化指南

    一.什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-T ...

  9. 【转】HTTP请求中的form data和request payload的区别

    jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的,比如用$.ajax方法发送请求时(data参数是一个JSON.stringify()处理后的字符串, ...

  10. QPen

    Help on class QPen in module PyQt5.QtGui: class QPen(sip.simplewrapper) |  QPen() |  QPen(Qt.PenStyl ...