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。