Docker的发展历程详述(2)

2016年,Docker 分拆了 containerd,并将其捐赠给了社区。将这个组件分解为一个单独的项目,使得 docker 将容器的管理功能移出 docker 的核心引擎并移入一个单独的守护进程(即 containerd)。

6、Docker Components
分拆完 containerd 后,docker 各组件的关系如下图所示(此图来自互联网):

Docker的发展历程详述

至此,docker 从一个单一的软件演变成了一套相互独立的组件和项目。

7、Docker 如何运行一个容器?

Docker 引擎创建容器映像

将容器映像传递给 containerd

containerd 调用 containerd-shim

containerd-shim 使用 runC 来运行容器

containerd-shim 允许运行时(本例中为 runC)在启动容器后退出

该模型带来的最大好处是在升级 docker 引擎时不会中断容器的运行。

8、2017 - 容器成为主流

2017 年是容器成为主流技术的一年,这就是为什么 docker 在 Linux 之外支持众多平台的原因(Docker for Mac,Docker for Windows,Docker for AWS,GCP 等)。

当容器技术被大众接受后,Docker 公司意识到需要新的生产模型,这就是为什么它开始 Moby 项目。

三、Moby Project

  Moby 项目开启了实现协作和生产的新篇章。它是一个开源项目,旨在推进软件的容器化。Moby 项目提供了数十个乐高积木一样的组件以及将它们组装成定制的基于容器的系统的框架。

1、docker的生成模型

(1)Docker 生产模型像任何其他常见的单个开源项目一样开始(此图来自互联网):

Docker的发展历程详述

(2)进而将单个项目拆分为不同的开放组件(此图来自互联网):

Docker的发展历程详述

(3)然后进化到可以共享这些组件以及组件集合(assembly)的模型(此图来自互联网):

Docker的发展历程详述

(4)最终达到能够提供更多关于组件和通用组件集合的协作的模型(此图来自互联网):

Docker的发展历程详述

2、下面我们就来介绍一些 Moby 项目中的组件

(1)Containerd
Containerd 是 docker 基于行业标准创建的核心容器运行时。它可以用作 Linux 和 Windows 的守护进程,并管理整个容器生命周期。

(2)Linuxkit
Linuxkit 是 Moby 项目中的另一个组件,它是为容器构建安全、跨平台、精简系统的工具。目前已经支持的本地 hypervisor 有 hyper-v 和 vmware。支持的云平台有 AWS、Azure 等。

(3)Infrakit
Infrakit 也是 Moby 项目的一部分。它是创建和管理声明式、不可变和自我修复基础架构的工具包。
Infrakit 旨在自动化基础架构的设置和管理,以支持分布式系统和更高级别的容器编排系统。Infrakit 对于像 Docker Swarm 和 Kubernetes 这样的编排工具或跨越 AWS 等公共云创建自动缩放群集的用例很有用。

(4)Libnetwork
Libnetwork 是用 Go 语言实现的容器网络管理项目。它的目标是定义一个容器网络模型(CNM),
并为应用程序提供一致的编程接口以及网络抽象。这样就可以满足容器网络的 "可组合" 需求。

(5)Docker & Docker Swarm
Docker Swarm 是一个在 docker 引擎中构建的编排工具。从 docker 1.12 开始它就作为一个独立的工具被原生包含在 docker engine 中。我们可以使用 docker cli 通过 docker swarm 创建群集,并部署和管理应用程序和服务。下图描述了 docker swarm 在 docker 体系中的作用(此图来自互联网):

Docker的发展历程详述

(6)Docker&Kubernetes
在 docker swarm 与 kubernetes 的竞争中,显然是 kubernetes 占据了优势。所以 docker 紧急掉头,开始原生的支持与 kubernetes 的集成。这可是 2017 年容器界的一大新闻啊!至此,docker 用户和开发人员可以自由地选择使用 kubernetes 或是 swarm 执行容器的编排工作。我们可以认为 docker 与 kubernetes 联姻了(此图来自互联网):

Docker的发展历程详述

新的支持 kubernetes 集成的 docker 版本将允许用户把他们的 docker compose 应用程序部署为 kubernetes 本地 pod 和服务。Kubernetes 是一款非常强大且逐渐被大众认可的本地编排工具(此图来自互联网):

Docker的发展历程详述

希望大家没有被文中众多的名称和概念搞糊涂,让我们以下图来结束本文,它展示了从 2013 年到 2017 年从 docker hub 拉取镜像次数的趋势:

Docker的发展历程详述

更多Docker相关教程见以下内容: 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c249bdc4bf637b352220c4bd606137a.html