英伟达显示容器服务器,安装使用NVIDIA-Docker-- 可使用GPU的Docker容器-程序员宅基地

技术标签: 英伟达显示容器服务器  

nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现的还是在docker的启动命令上携带一些必要的参数。因此在安装nvidia-docker之前,还是需要安装docker的。

docker一般都是使用基于CPU的应用,而如果是GPU的话,就需要安装特有的硬件环境,比如需要安装nvidia driver。所以docker容器并不直接支持Nvidia GPU。为了解决这个问题,最早的处理办法是在容器内部,全部重新安装nvidia driver,然后通过设置相应的设备参数来启动container,然而这种办法是很脆弱的。因为宿主机的driver的版本必须完全匹配容器内的driver版本,这样导致docker image无法共享,很可能本地机器的不一致导致每台机器都需要去重复操作,这很大的违背了docker的设计之初。

为了使docker image能很便利的使用Nvidia GPU,从而产生了nvidia-docker,由它来制作nvidia driver的image,这就要求在目标机器上启动container时,确保字符设备以及驱动文件已经被挂载。

nvidia-docker-plugin是一个docker plugin,被用来帮助我们轻松部署container到GPU混合的环境下。类似一个守护进程,发现宿主机驱动文件以及GPU 设备,并且将这些挂载到来自docker守护进程的请求中。以此来支持docker GPU的使用。

需提前安装好的软件

docker

由于nvidia docker是基于docker基础之上运行的,因此需要安装原生的docker。

nvidia显卡驱动

毫无疑问,要想使用GPU,必须要安装显卡驱动,这样nvidia docker才能正常运行。

这篇文章中讲解了CentOS安装显卡搭建深度学习环境的全过程,显卡驱动就是其中一项工作,因此这里就不单独写了,这篇文章中有安装的过程。

安装nvidia docker

1、下载nvidia-docker.repo文件,并将该文件输出到/etc/yum.repos.d/nvidia-docker.repo

curl -s -L https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

操作结果:

90ced146dabd3050156a713da719913f.png

2、查找可安装的nvidia docker版本

yum search --showduplicates nvidia-docker

运行上面的语句,会出现下面这张图中的信息,一路点击y

208bb6f150a7dfc6669c2ebb02bd2b6d.png

最终输出结果是下面这张图:

5999bcbe39c2bceb5f609654b4018c08.png

大家可以从中选择自己需要安装的nvidia docker版本,这里我安装的是docker是1.12.6版本的。因此我选择安装倒数第一个版本的nvidia docker。

3、安装nvidia-docker

yum install nvidia-docker-1.0.1-1.x86_64

点击回车,系统就会安装nvidia-docker,需要选yes\no的地方输入y,再点击回车,最终安装成功。

运行nvidia docker

1、运行docker:

// 运行docker

systemctl start docker

// 加入开机启动

systemctl enable docker

// 查看状态

systemctl status coker

2、运行nvidia-docker:

systemctl start nvidia-docker

systemctl enable nvidia-docker

systemctl status nvidia-docker

nvidia-docker的操作命令与docker基本相同,所以操作起来没有什么障碍。

kubernetes调用GPU

yaml文件配置:

apiVersion: v1

kind: Pod

metadata:

name: gpu-test

spec:

volumes:

-name: nvidia-driver hostPath:

path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69

-name: cgroup hostPath:

path: /sys/fs/cgroup

containers:

-name: tensorflow image: tensorflow:0.11.0-gpu

ports:

-containerPort: 8000 resources:

limits:

alpha.kubernetes.io/nvidia-gpu: 1

volumeMounts:

-name: nvidia-driver mountPath: /usr/local/nvidia/

readOnly: true

-name: cgroup mountPath: /sys/fs/cgroup

alpha.kubernetes.io/nvidia-gpu: 1:表示只使用1块gpu

path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69:宿主机driver位置,安装了nvidia-docker之后有的,当然需要保证宿主机nvidia driver是已经安装ok的,应该是安装了nvidia-docker之后,会发现宿主机的driver,然后映射到此。

path: /sys/fs/cgroup:挂载该目录也是为了识别显卡,使容器内部能够使用宿主机显卡。

volumeMounts:将宿主机目录挂载到容器内部,这个标签下的配置项就是要把宿主机目录挂载到容器内部的那个目录,通过name标识。

通过这些目录挂载配置,启动pod之后,容器就能够正常识别GPU并进行工作了。

更多Docker相关教程见以下内容:

Docker 的详细介绍:请点这里

Docker 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29505609/article/details/119528408

智能推荐

java 16.数组-程序员宅基地

文章浏览阅读80次。数组数组元素数组是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。总的来说,数组具有以下特点:数组可以是一维数组、二维数组或多维数组。数值数组元素的默认值为 0,而引用元素的默认值为 null。交错数组是数组的数组,..._java数组16

vue 3.0中设置网页title_vue3设置title-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏2次。(1)main.js创建自定义指令。(2)vue页面中使用。_vue3设置title

python爬虫遇到中文乱码问题(ISO-8859-1)_python 乱码 ò ¢-程序员宅基地

文章浏览阅读4.6k次,点赞4次,收藏12次。python爬虫遇到中文乱码(ISO-8859-1)直接入正题,今天爬虫遇到中文乱码问题,具体大概如下:ÕбêÈË»òÆäÕбê´úÀí»ú¹¹Ó¦µ±¶ÔÆäÌá¹µÄÕб깫¸æµÄÕæʵÐÔ¡¢×¼È·ÐÔ¡¢ºÏ·¨ÐÔ¸ºÔð¡£(这种的字符)找问题所在,首先查看response的编码问题response = request.get(url,headers)print(response.encoding)输出内容:这就好办了,直接编码解码(使用utf_python 乱码 ò ¢

5G NR 定时提前:从协议信令到算法实现 (2)_5g 时间提前量-程序员宅基地

文章浏览阅读6.3k次,点赞4次,收藏48次。【声明】:本文为原创文章,发表于wingsofsilence的程序员宅基地。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: wingsofsilence 本文原始地址:http://blog.csdn.net/wingsofsilence/article/details/79356236第三部分: TA值测量的方式TA估计算法 1) PRACH 信道在初始接入过程中,T..._5g 时间提前量

【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法-程序员宅基地

文章浏览阅读2.7k次。1.2 运行运行 patchelf -h 能够得到如下信息:从上面的功能描述中可以看到,patchelf 的主要功能与动态库解析器、rpath、动态库本身相关,可能在解决一些动态库链接程序执行的问题时能够用到。1.3 应用-使用自定义的动态库目录 修改 以使用中的动态库, 的翻译 这篇文章中翻译了 ld.so 动态库链接器执行的过程,其中查找动态库的步骤如下:2. 同名动态库修改应用在应用的开发过程中,在进行多部门合作开发是,大家都会使用第三方库,经常会出现同一个库,不同的版本产_patchelf

阿里云CentOS服务器的安全设置及防黑加固_阿里云怎么防止被黑-程序员宅基地

文章浏览阅读1.7k次,点赞12次,收藏19次。之前服务器有几次被攻击的事件(ssh暴力破解、恶意程序、挖矿程序等),其中一次严重事件,服务器无法登录,联系阿里云售后也无法恢复,只能重置。所以决定认真学习下安全设置,并整理成博文,以供需要的人做参考。..._阿里云怎么防止被黑

随便推点

震惊!国内常见的14款低代码平台-程序员宅基地

文章浏览阅读2.1k次。Astro轻应用(Astro Zero,简称AstroZero)是零代码和低代码应用开发平台,源于华为应用开发和数字化转型的实践,提供了云上无码化、低码化、支持多码化的应用开发模式,屏蔽了技术的复杂性,提升了企业开发的效率。开放和透明,低代码平台最大的风险是技术锁定和黑盒,作为开发者我们自己也不喜欢封闭的低代码平台,因此爱速搭重视开放性,前端方面渲染器开源了,后端方面也选择了开发人员最熟悉的传统数据库技术,没有中间层,对开发者是透明的,并且爱速搭后端不依赖任何云厂商,可以部署到任意环境。_低代码平台

Vue基础——常用指令_vue中可以用什么代替innerhtml-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏2次。Vue基础——常用指令指令:Vue的指令是以v-开头的,作用于页面中的元素,所以需要将指令绑定与元素中,从而达到给绑定的元素添加行为的目的。​ 语法:<元素标签 v-指令 = “表达式”>1.v-text和v-html​ v-text 和v-html作用相近,都是更新元素的中的内容,可以理解为innertext和innerHTML,而不能一味的滥用这两个指令 ,如果需要更新的只是部分的元素则应该使用的是双大括号的插值:{{value}}。另外 v-_vue中可以用什么代替innerhtml

PYQT5笔记 011 :文件读取QFileDialog_qfiledialog如何读取多个文件-程序员宅基地

文章浏览阅读503次。QFileDialog提供了一个对话框,允许用户选择文件或目录。imgName, imgType = QFileDialog.getOpenFileName(None, "打开文件", "", "*.jpg;;*.png;;All Files(*)")[官方连接](https://doc.qt.io/qt-5/qfiledialog.html)_qfiledialog如何读取多个文件

Hadoop2.0 QJM方式的HA的配置-程序员宅基地

文章浏览阅读61次。日期:2014-05-03 来源:Linux社区本文在《Hadoop2.0的安装和基本配置》(见http://www.linuxidc.com/Linux/2014-05/101173.htm)一文的基础上继续介绍hadoop2.0 QJM(Quorum Journal Manager)方式的HA的配置(hadoop2..._hadoop qjm配置

Jquery如何获取ASP.NET服务器控件的值-程序员宅基地

文章浏览阅读197次。关键字: Jquery 服务器控件 获取值由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,总结有以下3种方法:服务器控件代码:<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>1. $("#<%=txtUserID...._jquery 获取服务器控件点击事件

课堂作业:web网页实验一(1)_web第四版实验1-程序员宅基地

文章浏览阅读2.2k次。需要在里编译<html><head> <title>白居易的诗</title></head><body background="2019-06-01 15'21'33.jpg"><embed src="04.忽然.mp3"><h1><font color="green"..._web第四版实验1