CentOS7 Nvidia Docker环境

2024-08-23 13:48
文章标签 docker centos7 环境 nvidia

本文主要是介绍CentOS7 Nvidia Docker环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://www.cnblogs.com/yxfangcs/p/8438462.html

最近在搞tensorflow的一些东西,话说这东西是真的皮,搞不懂。但是环境还是磕磕碰碰的搭起来了

其实本来是没想到用docker的,但是就一台配置较好的服务器,还要运行公司的其他环境,vmware esxi用起来太费劲,还是算了。

 

环境:

系统:CentOS7 7.4 1708

显卡:Nvidia 1080Ti

 

下载所有需要的东东

1、docker-ce yum repo : https://download.docker.com/linux/centos/docker-ce.repo

2、nvidia-docker yum repo : https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo

3、nvidia cuda yum repo : http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-9.1.85-1.x86_64.rpm

4、nvidia cudnn : https://developer.nvidia.com/cudnn 

这个东西需要注册nvidia账号,就不给直接下载地址了。

5、nvidia驱动 : http://www.nvidia.cn/Download/index.aspx?lang=cn 

按自己的显卡型号下载

6、nvidia docker file : https://hub.docker.com/r/nvidia/cuda/

这里面可以看到很多dockerfile,选择

  • 9.0-base-centos7 (9.0/base/Dockerfile)

其他的cuda9.1这些应该也可以用,另外有像devel和runtime这样的,其实就是yum安装的cuda包不太一样,没多大关系。

点进去后复制下来保存为Dockerfile文件,但是之后搞的时候发现有点问题,修改了一下,可以从这儿复制

 

所有的文件

复制代码
[root@localhost nvidia]# pwd
/root/nvidia
[root@localhost nvidia]# ll
total 420000
drwxr-xr-x. 2 root root      4096 Feb 10 10:50 centos-gpu
-rw-r--r--. 1 root root      3335 Jan 29 10:36 cuda-repo-rhel7-9.1.85-1.x86_64.rpm
-rw-r--r--. 1 root root 348817823 Feb  6 16:26 cudnn-9.0-linux-x64-v7.tgz
-rw-r--r--. 1 root root      2424 Feb  9 10:36 docker-ce.repo
-rw-r--r--. 1 root root       796 Feb  9 17:11 nvidia-docker.repo
-rwxr-xr-x. 1 root root  81242220 Jan 31 14:19 NVIDIA-Linux-x86_64-390.25.run
复制代码

 centos-gpu里有Dockerfile文件

 

准备工作

直接上命令,一看就明白

复制代码
[root@localhost nvidia]# cp docker-ce.repo nvidia-docker.repo /etc/yum.repos.d/
[root@localhost nvidia]# rpm -ivh cuda-repo-rhel7-9.1.85-1.x86_64.rpm
[root@localhost nvidia]# yum install epel-release
[root@localhost nvidia]# yum install gcc gcc-c++

[root@localhost nvidia]# yum install kernel*
复制代码

 

安装驱动 

复制代码
[root@localhost nvidia]# echo "blacklist nouveau" >>/etc/modprobe.d/blacklist.conf
[root@localhost nvidia]# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -v /boot/initramfs-$(uname -r).img $(uname -r) 
[root@localhost nvidia]# init 3 
[root@localhost nvidia]# chmod +x NVIDIA-Linux-x86_64-390.25.run 
[root@localhost nvidia]# ./NVIDIA-Linux-x86_64-390.25.run
复制代码

大概步骤就是这样,如果出现问题,可以直接网上找一找,应该不会太难

 

安装和启动docker

[root@localhost nvidia]# yum install docker-ce nvidia-docker
[root@localhost nvidia]# systemctl enable docker
[root@localhost nvidia]# systemctl start docker
[root@localhost nvidia]# systemctl enable nvidia-docker
[root@localhost nvidia]# systemctl start nvidia-docker

记得显卡驱动一定要先装好,nvidia-docker才能正常启动

 

制作docker镜像

[root@localhost nvidia]# yum install cuda-cudart-9-0-9.0.176-1
[root@localhost nvidia]# ln -s cuda-9.0 /usr/local/cuda
[root@localhost nvidia]# nvidia-docker build -t centos-nvidia /root/nvidia/centos-gpu

如果你是用的我修改的Dockfile应该不会有什么问题,如果你是用的原版的,可能会在

出错,但是咱们已经下载cuda 的 repo,并安装了,所以这一步可以不用。

镜像制作结束后,可以用命令 docker images 查看一下:

[root@localhost centos-gpu]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
centos-nvidia           latest              a02c8e0ad5ca        2 hours ago         207MB

如果有这一行应该就算是成功了。

 

生成docker

复制代码
[root@localhost centos-gpu]# nvidia-docker run --name="centos-gpu2" -ti a02c /bin/bash
[root@34d532e76913 /]# nvidia-smi 
Sat Feb 10 03:42:20 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.25                 Driver Version: 390.25                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:02:00.0 Off |                  N/A |
| 23%   17C    P8     8W / 250W |     10MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
[root@34d532e76913 /]# exit
复制代码

如果类似于上面的输出结果,差不多就可以了。

 

使用Docker

复制代码
[root@localhost centos-gpu]# nvidia-docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
34d532e76913        a02c                "/bin/bash"         3 minutes ago       Exited (0) 12 seconds ago                       centos-gpu2
d16c2db2bf2e        a02c                "/bin/bash"         2 hours ago         Exited (0) 19 minutes ago                       centos-gpu
370671db8df1        3afd                "/bin/bash"         19 hours ago        Exited (137) 3 hours ago                        centos-dronemap
[root@localhost centos-gpu]# nvidia-docker start 34d5
34d5
[root@localhost centos-gpu]# nvidia-docker cp /root/nvidia/cuda-repo-rhel7-9.1.85-1.x86_64.rpm 34d532e76913:/root
[root@localhost centos-gpu]# nvidia-docker exec -ti 34d5 /bin/bash
[root@34d532e76913 /]# cd
[root@34d532e76913 ~]# ls
anaconda-ks.cfg  cuda-repo-rhel7-9.1.85-1.x86_64.rpm
[root@34d532e76913 ~]# rpm -ivh cuda-repo-rhel7-9.1.85-1.x86_64.rpm 
warning: cuda-repo-rhel7-9.1.85-1.x86_64.rpm: Header V3 RSA/SHA512 Signature, key ID 7fa2af80: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:cuda-repo-rhel7-9.1.85-1         ################################# [100%]
[root@34d532e76913 ~]# yum install cuda-*9-0*
复制代码

这里需要注意的是类似于 34d532e76913 这样的编号,是docker自动生成的,运行的时候需要修改一下。

到目前基本上cuda的环境就搭建好了。

 

TensorFlow

把下载的cudnn包用docker cp复制到docker中,解压下来,将里面的lib64路径添加到 /etc/ld.so.conf.d/nvidia.conf 中,运行ldconfig,就ok了。

上面的环境好了以后,再安装python等等软件,这就不说了。之后tensorflow的一些例子就可以在docker里运行了。当然你得安装gpu版本的,才能发挥显卡的威力。

另外也可以不必要这么麻烦,有已经制作好的镜像可以拿来用,可以参考:https://hub.docker.com/r/tensorflow/tensorflow/ 

 

其他

另外也有现成的cuda镜像可以用,参考:https://hub.docker.com/r/nvidia/cuda/   

直接使用命令:docker pull nvidia/cuda 就可以下载镜像了,只不过这是ubuntu版本的,和我们的生成环境不符,如果要其他版本的可以参考上面的例子。

如果文中有不对之处,欢迎指正。

 

最后

这一段时间没有写什么东西,另外之前的关于图形绘图的东西,一直没扔,已经有很多东西可以和大家分享了,只不过时间很少,还没来得及整理。等有空了就能听着音乐在屏幕前磨洋工了,KeKe~。


这篇关于CentOS7 Nvidia Docker环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099552

相关文章

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配