day82-容器技术day09实现容器内使用GPU-8.05
学习tip:
1.为什么要学这个?
2.这个有什么用?
3. 听完提出自己的问题。
4. 自己总结,不要直接抄老师的笔记。
5. 自己写一遍或者画图画一遍,是输出一遍。(费曼学习法)
=============
重点:
抓住问题的本质
万变不离其宗。
抓重点,放次要的
高薪必问 数据库(mysql,redis)
数据库的学习重点给你点一下,
1.索引结构与慢查询优化,
2.事务,
3.存储引擎,
4.多种主从架构及流程,
5.两阶段提交,
6.锁机制,
7.死锁问题处理,
8.乐观锁悲观锁等
容器:
容器本质是:“共享内核, 隔离文件系统”
=====老师笔记========
一、cpu与gpu
cpu:擅长逻辑控制,串行运算,cpu就好像一个老教授,老教授的特点是啥数学题都能算
gpu:擅长大规模的并发计算机,gpu就好像是一群只会算简单的加减法的小学生
二、要想启动一个容器使用gpu需要具备哪些条件
1、宿主机上必须插一块gpu卡
2、宿主机上需要为该gpu卡安装驱动程序
3、安装官方的容器引擎,例如docker容器引擎
4、配套安装一个nvidia-container-runtime
5、启动容器采用参数--gpus指定启动gpu,
或者修改配置文件把默认的runc替换为nvidia-container-runtime这样就不用加--gpus参数启动
容器默认都能访问gpu
强调:容器环境内必须有cuda环境才行
=====昨天问题========
====自问自答-预习=====
1. 是什么?
2. 为什么?
3.有什么用?
====自问自答-听课=====
1. 怎么在容器里实现GPU访问?
正常是不能访问的。
得宿主机有CUDA驱动,才能访问
2. 英伟达 做了什么适配docker?
做了2个版本,
nvidia-docker1.0 实现的时候耦合度很高
nvidia-docker2.0 实现的runc那一部分

3. 创建GPU的示意图:
注意:要提前安装nvidia-runc 这个东西


4.要创建GPU要具备哪些条件?
5.具体的流程是?

-
1、正常创建一个容器的流程是这样的:
docker –> dockerd –> containerd–> containerd-shim –>runc –> container-process
docker客户端将创建容器的请求发送给dockerd, 当dockerd收到请求任务之后将请求发送给containerd, containerd经过查看校验启动containerd-shim或者自己来启动容器进程。
创建一个使用GPU的容器 -
2、创建GPU容器的流程如下:
docker–> dockerd –> containerd –> containerd-shim–> nvidia-container-runtime –> nvidia-container-runtime-hook –> libnvidia-container — > container-process
基本流程和不使用GPU的容器差不多,只是把docker默认的运行时替换成了NVIDIA自家的nvidia-container-runtime。
这样当nvidia-container-runtime创建容器时,先执行nvidia-container-runtime-hook这个hook去检查容器是否需要使用GPU(通过环境变NVIDIA_VISIBLE_DEVICES来判断)。如果需要则调用libnvidia-container来暴露GPU给容器使用。否则走默认的runc逻辑
6.docker19.03版本以前还是用英伟达的1.0时代?
是的,
docker的版本若是在docker19以前,
那么就需要用nvidia-docker1.0
要下载一个全的。(从dockerd 那里构建的)
7.仓库地址[群友提供,还没验证]:
增加一个文件:
vim /etc/yum.repos.d/nvidia-container-runtime.repo
添加这个:
[nvidia-container-toolkit]
name=nvidia-container-toolkit
#baseurl=https://nvidia.github.io/libnvidia-container/stable/rpm/$basearch
baseurl=https://nvidia.github.io/libnvidia-container/centos7/x86_64/
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
[nvidia-container-toolkit-experimental]
name=nvidia-container-toolkit-experimental
#baseurl=https://nvidia.github.io/libnvidia-container/experimental/rpm/$basearch
baseurl=https://nvidia.github.io/libnvidia-container/centos7/x86_64/
repo_gpgcheck=1
gpgcheck=0
enabled=0
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
8.[动手实践]刚才的视频在讲什么?
9.[动手实践]刚才的视频在讲什么?
10.[动手实践]刚才的视频在讲什么?
11.[动手实践]刚才的视频在讲什么?
12.有什么用?
13.有什么用?
14.有什么用?
15.有什么用?
今日作业:
参考资料:
英伟达驱动runc:https://nvidia.github.io/nvidia-container-runtime/

浙公网安备 33010602011771号