女主宣言
上篇推送我们介绍了 nvidia-docker 2.0 在我司大规模 Kubernetes 集群上的实践,本篇文章就将介绍相较于旧版本,nvidia-docker 2.0 的设计优势及其实现机制,希望能对大家有所帮助。本文首发于 OpsDev.cn,转载已获取作者授权。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
The 50th Anniversary of Apollo 8's Launch
by NASA IOTD
NVIDIA于2016年开始设计NVIDIA-Docker已便于容器使用NVIDIA GPUs。 第一代nvidia-docker1.0实现了对docker client的封装,并在容器启动时,将必要的GPU device和libraries挂载到容器中。
1
nvidia-docker 存在的问题
但是这种设计的方式高度的与docker运行时耦合,缺乏灵活性。存在的缺陷具体如下:
设计高度与docker耦合,不支持其它的容器运行时。如: LXC, CRI-O及未来可能会增加的容器运行时。
不能更好的利用docker生态的其它工具。如: docker compose。
不能将GPU作为调度系统的一种资源来进行灵活的调度。
完善容器运行时对GPU的支持。如: 自动的获取用户层面的NVIDIA Driver libraries, NVIDIA kernel modules, device ordering等。
基于上面描述的这些弊端,NVIDIA开始了对下一代容器运行时的设计: nvidia-docker2.0。
2