通过Docker来创建多个容器(相当于多个linux系统),每个容器中的CUDA版本之间互相不影响。这样的好处是可以在项目需要时,不改动主机环境的前提下运行多个CUDA版本。同时,也可以为不同的使用人员定制相应的环境而不影响其他环境。

通过ssh来远程访问docker容器,这样可以在一个局域网内的任何一台电脑上访问到容器。例如,一个实验室内的一台服务器上安装了多个docker容器,就可以在实验室上的任何一台电脑上通过ssh访问docker容器。

关于Docker的基本操作,可以参考这个文档:Docker快速入门总结笔记_huangjhai的博客-CSDN博客Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。https://blog.csdn.net/huangjhai/article/details/118854733

接下来开始安装

1、Linux上安装显卡驱动

为了让docker可以正确的识别显卡,首先需要在宿主机上安装nvidia的显卡驱动,这里不需要安装cuda和cudnn。就像下图一样,驱动安装在宿主机上,而cuda和cudnn安装在docker容器里。安装显卡驱动的帖子很多,这里就不做详细说明了,建议直接安装比较新的版本,因为新版本的显卡驱动可以使用老版本的cuda,但是老版本的显卡驱动却无法使用新版本的cuda。可以参考下面这篇文章

ubuntu安装显卡驱动的三种方法_u014682691的专栏-CSDN博客_ubuntu安装显卡驱动一是:系统设置->软件更新->附加驱动->选择nvidia最新驱动(361)->应用更改简单但是不提倡 二是:先官网下载好对应驱动编译Nvidia中文官网是 http://www.nvidia.cn/page/home.html1)打开终端,先删除旧的驱动:sudo apt-get purge nvidia*2)禁用自带的 nouveau nvidia驱动创建一个文件通过命...https://blog.csdn.net/u014682691/article/details/80605201

2、安装docker

建议安装docker19及其以上版本,因为docker19以上版本可以通过--gpus参数来调用gpu,而不需要安装nvidia-docker。安装docker最好的文档就是官方的文档:

Install Docker Engine on Ubuntu | Docker DocumentationInstructions for installing Docker Engine on Ubuntuhttps://docs.docker.com/engine/install/ubuntu/

  1. 如果安装了旧版本的docker,需要先卸载!

    sudo apt-get remove docker docker-engine docker.io containerd runc
  2. 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库
    sudo apt-get update
    sudo apt-get install \ca-certificates \curl \gnupg \lsb-release
  3. 添加Docker官方的GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 使用以下命令设置稳定版存储库。
    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. 安装 Docker 引擎
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 不出意外,此时docker已经安装好了。运行如下命令来测试一下
    sudo docker run hello-world

3、安装 NVIDIA Container Toolkit

安装了NVIDIA Container Toolkit,docker才能正确使用GPU。可以参考网页连接进行安装(因为安装的docker是19及其以上版本,所以不需要安装nvidia-docker):
Installation Guide — NVIDIA Cloud Native Technologies documentationhttps://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

  1. 设置稳定版的存储库喝GPG密钥

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  2. 更新源并安装nvidia-container-toolkit
    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    sudo systemctl restart docker
  3. 设置好默认运行后重启Docker守护进程完成安装
    sudo systemctl restart docker
  4. 此时,可以通过运行基本 CUDA 容器来测试工作设置
    sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
  5. 控制台输出如下结果表示安装成功了
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
    | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+

4、从dockerhub拉取环境镜像并搭建环境

docker安装完毕后就可以在dockerhub寻找需要的镜像进行拉取,这里我们需要配置深度学习环境,也就是cuda+cudnn,所以我们拉取nvidia官方的nvidia/cuda镜像。

Docker Hubhttps://hub.docker.com/
 点击Tags我们可以看到nvidia/cuda对应的所有的版本,我们可以寻找自己需要的版本进行安装。

这里需要注意,选择的cuda版本需要满足宿主机的显卡驱动需求可以查看如下网页中的table3。

Release Notes :: CUDA Toolkit DocumentationThe Release Notes for the CUDA Toolkit.https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-resolved-issues

这里我们安装基于ubuntu的cuda版本11.0.3的镜像:11.0.3-cudnn8-devel-ubuntu20.04
采用如下命令拉取镜像

sudo docker pull nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04

由于镜像比较大,这里要等待一些时间。如果发现拉取的速度很慢,明显低于带宽。可能是因为dockerhub的服务器在国外的原因,可以配置docker的源为国内镜像源。这里就不具体介绍怎么操作了,需要的小伙伴可以直接去百度搜,教程很多。

显示如下信息表示镜像拉取完成了。

可以通过  sudo docker images 命令查看已经存在的镜像。

接下来是通过镜像建立容器,采用如下命令

sudo docker run -it --name test --gpus all -p 1234:22 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04

命令解释:

-it        以交互模型运行容器,也就是运行容器后不退出
--name test        将容器命名为test,否则会随机命名
--gpus all            允许使用所有的gpu,这个非常重要,没有这个参数gpu无法正常使用
-p 1234:22        将宿主机的1234端口映射到容器的22端口,为了ssh链接做准备
nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04        镜像名:版本号

其他后期可能会用到的命令,详细使用方法参考Docker快速入门总结笔记_huangjhai的博客-CSDN博客

docker kill           杀掉容器
docker start        开启容器
docker exec        进入容器
docker ps           显示运行中的容器

创建完成后可以用过    nvidia-smi    命令查看gpu是否正常工作, nvcc -V  命令查看cuda和版本。

现在一个基于ubuntu20.04的cuda+cudnn环境已经搭建好了,接下来就和使用普通的ubuntu系统一样,不过这里的ubuntu系统是精简版的,很多命令和软件并没有,可以自行通过apt安装(首先要通过apt update命令更新软件源,默认没有更新)。例如,通过apt安装python3、python3-pip,然后再安装TensorFlow和pytorch等。

(可选)4、直接拉取pytorch或者TensorFlow的环境

上一节介绍的环境搭建方法是:首先拉取cuda+cudnn的环境,然后在自行用pip或者conda搭建pytorch和TensorFlow环境。

其实还有一种更简单的方法来搭建pytorch和TensorFlow环境,就是直接拉取pytorch和TensorFlow的docker镜像,方法与拉取cuda镜像一样,链接如下:

Docker Hubhttps://hub.docker.com/r/pytorch/pytorchDocker Hubhttps://hub.docker.com/r/tensorflow/tensorflow

5、安装和使用ssh进行远程连接

在容器内安装ssh服务端,这样我们可以用过ssh远程访问容器。第4节中通过 -p 命令已经将宿主机1234端口映射到容器22端口,因此我们可以通过ssh访问:宿主机IP+宿主机1234端口    来达到访问容器的目的。同理,我们在宿主机中建立不同的容器,映射不同的宿主机端口,则可以通过宿主机的不同端口来访问不同的容器。

参考文章Docker Ubuntu上安装ssh和连接ssh_JustToFaith-CSDN博客下面所有操作都是在阿里云服务器上进行,ubuntu18.04环境。Docker 版本是18.09.6首先从云上拉取一个ubuntu的一个镜像root@LIZ:~# docker pull ubuntu # 如果是在自己的物理机上操作前面要加 sudo 下同启动镜像root@LIZ:~# docker run -itd -p 6789:22 199这段命令的意思是在后...https://blog.csdn.net/qq_43914736/article/details/90608587

  1. 首先在容器内安装ssh服务端,如果让选择地区,选择亚洲/上海即可(Asia/Shanghai)

    apt-get update
    apt-get install openssh-server
  2. 为容器中的root账户设置一个密码,这样ssh才能链接
    passwd
  3. 修改ssh的配置文件,这样才能通过root账户和密码访问
    vim /etc/ssh/sshd_config

    注释这一行PermitRootLogin prohibit-password
    添加一行PermitRootLogin yes
    然后保存退出

  4. 在容器中启动ssh服务
    /etc/init.d/ssh restart
  5. 宿主机通过ssh连接容器
    ssh root@127.0.0.7 -p 1234

这样,基于docker的深度学习服务器就搭建完成了,通过多个容器,就可以在一台宿主机上配置多个互不干扰的环境,并通过ssh进行远程连接。

Docker部署深度学习服务器,CUDA+cudnn+ssh相关推荐

  1. Centos8安装英伟达显卡驱动并通过docker部署深度学习环境

    20201107 - 每个人的机器和实际需要的环境都不一样,本文只是提供了在自己实验室centos8上的部署过程,部署过程中,没有什么问题.请谨慎参考本篇文章,以免浪费宝贵时间. 0. 引言 之前的时 ...

  2. Docker 部署深度学习 运行deeplabV3

    文章目录 前言 一.Docker简介 二.帮助命令 三.镜像常用命令 四.容器常用命令 五.配置深度学习环境 六.运行deeplabV3代码 七.提交容器,保存镜像 总结 前言 本文主要介绍docke ...

  3. 裸机搭建深度学习服务器,ubuntu ssh服务器,pytorch, tensorflow, paddle三种框架安装。以及各种避雷。

    努力是为了不平庸~ 深度学习有些时候是枯燥的,AI的成长总是被说不可能,但是越是被说不可能,我们就越要创造无限可能!加油每一个AI人,我们会用行动来证明 我们的! rufurufus 需求知识点 提示 ...

  4. 利用docker部署深度学习模型的一个最佳实践

    编程狗在线 自由的编程学习平台 前言 最近团队的模型部署上线终于全面开始用上docker了,这感觉,真香! 讲道理,docker是天然的微服务,确实是能敏捷高效的解决深度学习这一块的几个痛点. 部分神 ...

  5. Ubuntu 21.04 使用Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)

    文章目录 1.安装Docker 1.1 确定系统版本 1.2 卸载旧版本 1.3 设置stable镜像仓库 1.4 安装Docker ce 1.5 测试 1.6 阿里云镜像加速 1.7 重启服务器 2 ...

  6. docker 利用docker拉取Nvidia/cuda官方镜像,部署深度学习环境

    利用docker拉取Nvidia/cuda官方镜像,部署深度学习环境 1.拉取Nvidia/cuda官方镜像 2.生成容器 3.在容器内安装深度学习环境 看完这篇博文,可以查看我总结的另一篇博文教程: ...

  7. 基于Docker的深度学习环境NVIDIA和CUDA部署以及WSL和linux镜像问题

    基于Docker的深度学习环境部署 1. 什么是Docker? 2. 深度学习环境的基本要求 3. Docker的基本操作 3.1 在Windows上安装Docker 3.2 在Ubuntu上安装Do ...

  8. linux重启gpu_远程配置Ubuntu深度学习服务器GPU驱动+Docker+CUDA多个版本

    前言 首先说一下为什么建议使用docker来使用搭建深度学习服务器.其实网上很多人都写了如何搭建CUDA10.0 + cudnn8.5 , CUDA9.0 + cudnn7.5 等等,并且从Tenso ...

  9. 从零开始搭建深度学习服务器: 基础环境配置(Ubuntu + GTX 1080 TI + CUDA + cuDNN)

    从零开始搭建深度学习服务器: 基础环境配置(Ubuntu + GTX 1080 TI + CUDA + cuDNN) 首先先声明一下 这篇是转载来自  : 从零开始搭建深度学习服务器: 基础环境配置( ...

最新文章

  1. kafka在zookeeper中存储结构
  2. 明星软件工程师的十种特质
  3. vs编译慢原因和解决方法
  4. 组态王7.5安装教程
  5. gzip: stdin: unexpected end of file
  6. 反编译获取线上任何微信小程序源码(转)
  7. cglib动态代理实现及其原理浅析
  8. 100m光纤测速多少正常_100m宽带wifi测速多少为正常
  9. “地面哨兵”挑战赛圆满落下帷幕,最终结果揭晓
  10. Python 将图片合成视频
  11. 小白学习Winform 遇到的问题总结
  12. 昇腾 (Ascend) AI 处理器:达芬奇架构
  13. homebrew Error: qt: unknown version :mountain_lion
  14. 迷宫求解【穷举求解法】
  15. 股票证券名词解释汇总
  16. Hybrid A*路径规划器的代码注释
  17. Win7系统很卡应该如何解决?[系统天地]
  18. 第07课:技术精进之道
  19. 网络工程师成长日记389-某市某县纪律检查监督局
  20. 公布HP TC4400 安装WIN7全驱动全功能攻略

热门文章

  1. STM32F103C8T6读取加密芯片SMEC98SP(SE98)的UID号
  2. Chrome浏览器禁用TextBox的自动填充
  3. 微信生成门店渠道二维码总结记录
  4. javascript教程系列20: 前端必读,浏览器内部工作原理(转)
  5. 2021年化工自动化控制仪表复审模拟考试及化工自动化控制仪表实操考试视频
  6. Hive load data 时中文乱码的解决
  7. MySQL分别通过Navicat附加mdf文件,Workbench导入sql文件
  8. python选择题题目_《Python程序设计》题库 - 选择题
  9. 三款大四学生必备PDF阅读器,国产也可以很牛x
  10. Immersionbar学习笔记