CentOS7 Nvidia Docker环境
最近在搞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,选择
其他的cuda9.1这些应该也可以用,另外有像devel和runtime这样的,其实就是yum安装的cuda包不太一样,没多大关系。
点进去后复制下来保存为Dockerfile文件,但是之后搞的时候发现有点问题,修改了一下,可以从这儿复制
FROM centos:7
LABEL maintainer "NVIDIA CORPORATION <cudatools@nvidia.com>" RUN NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \
echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict - #COPY cuda.repo /etc/yum.repos.d/cuda.repo ENV CUDA_VERSION 9.0.176 ENV CUDA_PKG_VERSION 9-0-$CUDA_VERSION-1
#RUN yum install -y \
# cuda-cudart-$CUDA_PKG_VERSION && \
# ln -s cuda-9.0 /usr/local/cuda && \
# rm -rf /var/cache/yum/* # nvidia-docker 1.0
LABEL com.nvidia.volumes.needed="nvidia_driver"
LABEL com.nvidia.cuda.version="${CUDA_VERSION}" RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64 # nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV NVIDIA_REQUIRE_CUDA "cuda>=9.0"
所有的文件
[root@localhost nvidia]# pwd
/root/nvidia
[root@localhost nvidia]# ll
total
drwxr-xr-x. root root Feb : centos-gpu
-rw-r--r--. root root Jan : cuda-repo-rhel7-9.1.-.x86_64.rpm
-rw-r--r--. root root Feb : cudnn-9.0-linux-x64-v7.tgz
-rw-r--r--. root root Feb : docker-ce.repo
-rw-r--r--. root root Feb : nvidia-docker.repo
-rwxr-xr-x. root root Jan : 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.-.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
[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.-
[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应该不会有什么问题,如果你是用的原版的,可能会在
#COPY cuda.repo /etc/yum.repos.d/cuda.repo
出错,但是咱们已经下载cuda 的 repo,并安装了,所以这一步可以不用。
镜像制作结束后,可以用命令 docker images 查看一下:
[root@localhost centos-gpu]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-nvidia latest a02c8e0ad5ca hours ago 207MB
如果有这一行应该就算是成功了。
生成docker
[root@localhost centos-gpu]# nvidia-docker run --name="centos-gpu2" -ti a02c /bin/bash
[root@34d532e76913 /]# nvidia-smi
Sat Feb ::
+-----------------------------------------------------------------------------+
| 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. |
|===============================+======================+======================|
| GeForce GTX ... Off | ::00.0 Off | N/A |
| % 17C P8 8W / 250W | 10MiB / 11178MiB | % 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" minutes ago Exited () seconds ago centos-gpu2
d16c2db2bf2e a02c "/bin/bash" hours ago Exited () minutes ago centos-gpu
370671db8df1 3afd "/bin/bash" hours ago Exited () 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.-.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.-.x86_64.rpm
[root@34d532e76913 ~]# rpm -ivh cuda-repo-rhel7-9.1.-.x86_64.rpm
warning: cuda-repo-rhel7-9.1.-.x86_64.rpm: Header V3 RSA/SHA512 Signature, key ID 7fa2af80: NOKEY
Preparing... ################################# [%]
Updating / installing...
:cuda-repo-rhel7-9.1.- ################################# [%]
[root@34d532e76913 ~]# yum install cuda-*-*
这里需要注意的是类似于 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环境的更多相关文章
- centos7 搭建 docker 环境
1. 安装centos7 http://isoredirect.centos.org/centos/7/isos/x86_64/ 下载 everything 版本,最小化版本可能缺失很多东西 我是在 ...
- centos7搭建docker环境
Docker简介 Docker是一种虚拟化技术,用来将你的应用程序及其依赖的环境一起打包成一个镜像发布,使得在任何地方都能获得相同的运行环境. Docker 是一个开源项目,诞生于 2013 年初,最 ...
- docker环境安装
centos7安装docker环境 # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 ...
- Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...
- centos7系统下 docker 环境搭建
运行环境: VMware Workstation Pro 在虚拟机中安装centos7系统, 选择最小安装, 网络连接方式选择的桥接(与宿主机在同一IP段)centos7一定要安装64位, docke ...
- centos7 安装 NVIDIA Docker
安装环境: 1.centos7.3 2.NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] 安装nvidia-docker a.安装docker 可参考ce ...
- Rancher安装 - CentOS7(Docker)环境
Rancher安装 - CentOS7(Docker)环境 对于开发和测试环境,我们建议通过运行单个Docker容器来安装Rancher.在此安装场景中,您将在单个Linux主机上安装Docker,然 ...
- centos7下通过yum方式安装docker环境
1.移除旧版本: yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...
- centos7 搭建docker内运行rabbitmq,然后再镜像ha方案的完全教程,暂时一个宿主机只能运行一个docker的rabbitmq,但是集群 ha都正常
1.安装centos7.x,配置好网络2.因为docker需要比较高版本的内核,比如使用overlayfs作为默认docker文件系统要3.18,所以先升级内核到3.18以上版本,能直接过4是最佳了检 ...
随机推荐
- LightOJ DNA Prefix(字典树+dfs)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121897#problem/F F - DNA Prefix Time Limit:200 ...
- UnityShader 表面着色器简单例程集合
0.前言 这些简单的shader程序都是写于2015年的暑假.当时实验室空调坏了,30多个人在实验室中挥汗如雨,闷热中学习shader的日子还历历在目.这些文章闲置在我个人博客中,一年将过,师弟也到了 ...
- PhpStorm常用的一些快捷键
Ctrl + G : 跳到当前打开文件的行,输入格式(行数:列数)Ctrl + E : 打开最近编辑的文件列表Ctrl + P : 显示函数的参数信息Ctrl + Q : 快速打开函数的说明 ...
- 我的flashfxp左右界面怎么变成这样了?
如下图,flashfxp不是说左边是本地的文件夹,右边是服务器上的文件夹的吗?我不懂刚刚怎么搞了一下,变成两边都是服务器上的文件夹了,哪位大神,指点下,谢谢!!! 921050734 | 浏览 168 ...
- phpstorm(或webstorm) 打开后 一直停留在scanning files to index....,或跳出内存不够的提示框
记得3月份做项目时就遇到过这个问题,当时解决的 ,但是忘记怎么解决的啦,所以 ,写博文是多么的重要啊. 说明: 在npm install 后,会出现Scanning files to index .. ...
- Rootkit 核心技术——利用 nt!_MDL(内存描述符链表)突破 SSDT(系统服务描述符表)的只读访问限制 Part I
-------------------------------------------------------- 在 rootkit 与恶意软件开发中有一项基本需求,那就是 hook Windows ...
- ios - 如何获取app上的数据
做过ios开发的人应该都用过Charles,通常叫它花瓶.Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler.在开发iOS程序的时候,往往需要调试客户端和服 ...
- Core Graphics 和Quartz 2D的区别
quartz是一个通用的术语,用于描述在IOS和MAC OS X中整个媒体层用到的多种技术 包括图形.动画.音频.适配. Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用 ...
- 【开发技术】json
json(JavaScript Object Notation) JavaScript对象符号是一种结构化轻量级的数据传输格式,很多场合替代XML文件格式 JSON格式化校验:http://www.b ...
- Java多线程异常处理
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Run ...