近来 Docker 被 migrate 到了 Moby 下,这篇文章主要想讲讲我对这两个东西的了解。

之前的 Docker

之前的 Docker 就不用我来说了,大家肯定都了解,就是一个容器引擎,不过它正在变得越来越专注,容器运行时由 containerd 和 runc 来负责,Docker 更多的负责在其上的事情。

之前的 Moby

Moby 是之前一直有在关注的项目,原本以为跟 Docker 并没有什么直接的关系,没想到它跟 Docker 关系如此接近,以至于现在 github.com/docker/docker 已经被 迁移到了 github.com/moby/moby 上。那么他们两个的联系在哪里呢,这里发表下自己的看法。

之前因为 follow 了很多 Docker 的 collaborator 和 contributor,所以很早就知道 moby 这个项目。之前感觉 moby 做的事情是基于容器做一个可以构建操作系统的工具,可以看到现在 moby 周边的一些项目比如 linuxkit 都是围绕这个去做的。它把系统需要的一些功能拆成了不同的部分,好像一开始是为了支持 Docker for Windows and macOS 实现的。目前各种 kit 包括 linuxkitinfrakitvpnkitdatakithyperkit。对于之前的 moby,linuxkit 里的文档 有一个大致的解释,是说被用来 “converts the yaml specification into one or more bootable images.”,其中 yaml specification 是类似 linuxkit.yml 的东西。moby 的感觉给人一种 unikernel 的样子,他的输入是一个配置文件,在其中会声明需要的系统服务以及用户定义的一些服务,最后会输出一个操作系统,而且之前的 moby 支持 MirageOS

以后的 Moby

现在 Docker 已经被 transfer 到 Moby 下了,根据 @shykes说法,Moby 最近的任务是把 Monolithic 的 Docker 给整成 Micro 的,然后放在不同的 repo 里,以后 Moby 可能就是负责把这些 components 给 assemble 起来,构建出一个现在我们理解的 Docker。Docker Inc 自从买下 Unikernel 后没看到有什么动静,不知道来这么一手是不是有关系。因为从 monolithic 到 micro 的变化,在我觉得是为了以后搞事情。

之后的 Docker

之后的 Docker 可能只是 Moby 默认下构建出来的产物,而 Moby 则是有更大的愿景,它的目标可能在于帮助构建客制化的容器技术栈,允许自定义每一个组件。

其他

除了 Moby 和 Docker 以外,最吸引我注意的还是 linuxkit,我觉得这个东西提出来的思想非常的引人入胜,值得期待一下。

PS:这是初稿,随时可能改动

License

  • This article is licensed under CC BY-NC-SA 3.0.
  • Please contact me for commerical use.

评论