1、学习Docker(视频+动手)
2、尝试用Docker搭建一个应用:tomcat,redis,nginx,mysql,zk
还是希望能用kubernetes实现编排(可以先用docker来搞一遍)
可以用docker-compose/kubernetes实现
https://www.cnblogs.com/ityouknow/p/8661644.html
https://www.jianshu.com/p/592da53cdff0?utm_source=oschina-app
3、学习Go(还需要评估用Java还是Go,考虑实现OCI、CRI接口等可能还是Go好一些)
《Go语言实战》《Go并发编程实战》
Go的话可以直接用CRI的官方包提供的接口;可以模仿docker源码;调用底层接口应该会简单一些;有一部分功能如镜像部分不是很值得重新写一遍,可以直接抄docker的代码。
4、阅读《Docker源码分析》(参考github moby)+《自己手动写Docker》(参考github mydocker)
5、写代码
先写OCI,再写CRI。
写之前去试一下runC+containerd
2019/2/2
- 搭建完tomcat+nginx+mysql+redis的Demo,基于Docker+Link以及Kubernetes
- 将Kubernetes底层替换为containerd,再试一把
- 看一点containerd与runC的接口对接、CRI Plugin与containerd的接口对接
- 整理Go,两本书,然后写Demo,比如说生产者-消费者模式,然后搭建一个聊天室之类的基于HTTP的CS架构的应用。
- 需要补充的知识:Go Web编程
- 依赖管理
- 如何单步调试
- 先看containerd与runC相关的文章,然后读《Docker源码解析》
- 这里要避免的就是不要过度带入Docker架构,containerd的架构更有参考性
- 写代码前可以再读一下《自己动手写Docker》
- 写代码
- 可以考虑用Go和client-go把myDeployment重写一遍
2019/2/4
- 继续熟悉runC
- 阅读libcontainer源码
- 熟悉cli
- Go相关
- 建议把毕设分三个项目,一个OCI CLI+libcontainer,一个daemon,一个CRI plugin。