总结

随着容器技术的不断普及与云原生时代的到来,以Docker为首的容器技术已经成为云计算的基础设施。学习了解容器技术对从事云计算的开发人员非常重要,通过造轮子的方式可以以有效的方式来学习其中的实现原理,而不仅仅浮于”Docker是基于Linux Namespace和Cgroups技术实现的操作系统层面的隔离技术“这种表面。
本文首先介绍了项目背景和意义,包括容器技术的发展状况与Docker技术的现状。然后本文介绍了容器技术所用到的主要技术:Linux Namespace;Linux Cgroups;Union FileSystem;Linux Network;Go语言。本文接着介绍了以造轮子的方式编写的Capsule开源容器系统的需求与各个模块设计,并重点阐述了parent process、nsenter、network、init process等模块的核心实现原理。

进一步工作展望

目前OCI实现和镜像、网络等实现是放到同一个项目中实现,而实际上Docker(负责实现镜像、网络)和runC(OCI实现)其实是拆分开的,Docker以二进制方式调用runC。因为时间有限,所以暂时放到一个项目中实现,但实际上二者是包含关系而非并列关系。后续希望可以将其拆分开,将镜像、网络等功能放到一个C-S架构的项目中实现。
除了项目拆分外,代码质量也需要进行提升,补全单元测试等,进一步提升项目质量,争取打造成学习Docker实现原理的参考项目。