网络上有许多人读过了 docker 源码,我读的比较晚。2019-10-14 才开始

 

其官网

https://www.docker.com/,主要产品有几个

docker Enterprise

docker Hub

 

了解 docker 一

 

docker 官网改名的开源项目,从 docker 改为 moby

https://github.com/moby/moby

了解 docker 一

 

一个将组件装配成定制化基于容器的系统的框架和一个所有容器发烧友试验与交流想法的场所。

把Moby想象成容器系统的“乐高俱乐部”吧,像这样:

了解 docker 一

Moby 由以下几部分组成:

    1. 一个容器化的后端组件库(例如:一个低层 builder,日志功能、数据卷管理、网络、镜像管理、containered、SwarmKit)

    2. 一个可以将这些组件装配成独立的容器平台并协助构建、测试、部署构件的框架

    3. 一个叫 Moby Origin 的参考——它是 Docker 容器平台的开放基础,同时也是使用来自 Moby 库或是其它项目的组件的容器系统样例。

https://mobyproject.org/#moby-and-docker

通过Moby可以将定制化的组件打包做成一个Docker,而Moby就相当于一个组件仓库与Docker工厂。

把 docker 改名为 Moby 是: “Docker 公司直接把原 Docker 项目改名成了 Moby,是为了将之前数年里构建出来的庞大的粉丝团体和 Google 搜索内容(Google search footprint)全部转移到 Docker 公司的商业产品上。”

 

Moby主要针对的人群是想要组装一个基于容器的系统的人,包括

    * 想要定制化Docker构建的hacker

    * 想要构建一个容器系统的系统工程师

    * 想要将已经存在的容器系统适配到自己环境的 基础设施提供方

    * 想要体验最新容器技术的容器爱好者

    * 想要在不同系统中测试项目的开源开发者

    * 任何对Docker内部原理与如何构建感兴趣的人

但对于如下人群,Moby并不适合:

    * 寻求一种简单的在容器中运行应用程序的应用开发者。推荐使用Docker CE(社区免费版)。

    * 想要一个带有商业支持且开箱即用容器平台的企业IT与开发团队。推荐使用Docker EE(企业收费版)。

    * 任何对容器感兴趣并且寻求一种简单易学的方式的人。请访问docker.com吧。

Docker仍然还在,仍然还叫Docker。只是Moby项目已经问世,它是Docker的上游项目,是Docker之母。

 

RunC 是一个轻量级的工具,它是用来运行容器的,只用来做这一件事,并且这一件事要做好。我们可以认为它就是个命令行小工具,可以不用通过 docker 引擎,直接运行容器。事实上,runC 是标准化的产物,它根据 OCI 标准来创建和运行容器。而 OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准。

参考: https://www.cnblogs.com/sparkdev/p/9032209.html

 

HyperKit:OSX上运行的轻量级虚拟化工具包,基于MacOSX10.10之后引入的Hypervisor框架。HyperKit应用可以利用硬件虚拟化运行VMs,但是并不需要特殊权限或者复杂管理工具栈。

 

v*nKit:嵌入式虚拟网络库。是在裸Ethernet网络流量和MacOSX/Windows各自socket之间传输数据的网络库。基于MirageOS TCP/IP unikernel栈,是用OCaml编写的库。 如果需要在user-space内对网路进行粒度控制,v*nKit将会非常有用,另外还可以很方便用高级语言扩展。

 

SwarmKit:SwarmKit 是在 Swarm 的基础上研发出来的,只不过 Docker 公司对 SwarmKit 联系得更紧密。

SwarmKit 、 Swarm 、 Swarm Mode 这三个词,对刚开始接触的人来说可能有很多困惑。 SwarmKit 是 Swarm 这个项目的升级版。 Swarm 和 SwarmKit 最主要的区别在于 Swarm 是单独运行的,它需要一个第三方的分布式存储,它支持三种存储方式,即主流的三种分布式存储—— Zookeeper 、 ETCD 和 Counsul 。

SwarmKit 在 Swarm 的基础上精进了一步,不再需要有第三方存储,也不需要做 Leader 选举。它的发布方式,一种是独立的,另一种是直接和 DockerEnginet 混搭放在一起。所以大家安装新 Docker1.12 版本之后,实际上也拥有了 SwarmKit 。你有多台机器安装了 Docker1.12 版本,就已经拥有了一个 Swarm 的 cluster ,在上面就可以把任务负载到不同的机器上,不需要再去安装一堆组件。另外一个词叫 Swarm Mode ,如果你开启了 Swarm 模式的 Docker Engine ,用 Docker 的集群功能的时候 ,它实际上就是进入了 Swarm Mode 。

参考: https://blog.csdn.net/Michaelwubo/article/details/82455154

 

InfraKit:用于协调基础结构的声明式管理工具包

 

containerd:是一个工业标准的容器运行时,重点是它简洁,健壮,便携,在Linux和window上可以作为一个守护进程运行,它可以管理主机系统上容器的完整的生命周期:镜像传输和存储,容器的执行和监控,低级别的存储和网络。

参考: https://www.jianshu.com/p/d9bf66841a1e

 

DataKit:现代化分布式组件框架

 

了解 docker 一

 

LinuxKit:在 Moby 体系中,还有一个项目也值得关注,那就是 LinuxKit。细心的人可能已经发现了,LinuxKit 的前生是 https://github.com/docker/moby 项目(Docker 公司这玩儿名字是有多溜)。实际上,你如果用过 Docker for Win 或者 for Mac 的话,就知道在这种非 Linux OS 场景下,Docker 其实是启动了一个叫 MobyLinuxVM 的虚拟机来跑 Docker 容器的,为了能够让这个额外的 VM 层足够轻量级,内核裁剪和定制的工作就必不可少,这正是 LinuxKit 项目的来源。

LinuxKit 本身并不是一个精简操作系统,它是用来编译出可运行的精简操作系统镜像(包括 kernel,disk.img,BIOS.iso 等)的工具,这一点区别,国内有些介绍文章也不经意混淆了。

LinuxKit 所定义的是一种 Unikernels 风格的、专门为运行容器任务而定制的 OS distro。

 

 

相关文章:

  • 2021-05-29
  • 2021-09-05
  • 2021-12-09
  • 2021-12-23
  • 2021-06-27
  • 2021-06-04
  • 2021-05-02
  • 2021-06-26
猜你喜欢
  • 2021-03-28
  • 2021-08-16
  • 2021-11-24
  • 2022-02-03
  • 2021-06-05
  • 2021-12-15
相关资源
相似解决方案