1979 年:Unix V7
在 1979 年 Unix V7 的开发过程中,引入了 chroot 系统调用将进程及其子进程的根目录更改为文件系统中的新位置,这一进步是进程隔离的开始:为每个进程隔离文件访问Chroot 于 1982 年被添加到 BSD
2000 年:FreeBSD Jails(FreeBSD 监狱)
将近 20 年后的 2000 年,当时一家小型共享环境托管供应商提出了名为 FreeBSD Jails 的技术用来实现其服务与其客户服务之间的明确分离,以确保安全性和易于管理FreeBSD Jails 允许管理员将 FreeBSD 计算机系统划分为几个独立的、较小的系统,被称为 “ 监狱(jails) ”,能够为每个系统与配置分配一个 IP 地址。
2001 年:Linux VServer
与 FreeBSD Jails 一样,Linux VServer 是一种可以对计算机系统上的资源(文件系统、网络地址、内存)进行分区的监狱机制。这种操作系统虚拟化于 2001 年推出,通过给 Linux 内核打补丁来实现。这些实验性的补丁现在仍然可以获得,最后一个稳定版的补丁发布于 2006
2004 年:Solaris Containers
2004 年,Solaris Containers 的第一个公开测试版发布,它结合了系统资源控制和 zones 提供的边界分离,能够利用 ZFS 的快照、克隆之类的特性。
2005 年:Open VZ (Open Virtuzzo)
这是一种 Linux 上的 “ 操作系统级别的 ” 虚拟化技术,通过给 Linux 内核打补丁,可以实现虚拟化、隔离、资源管理与检查点功能,这些代码并没有作为官方 Linux 内核的一部分发布。
2006 年:Process Containers
Google 于 2006 年推出了 Process Containers,目的是限制、统计和隔离进程集合的资源使用(CPU、内存、磁盘 I/O、网络),一年后,它更名为 “ Control Groups (cgroups) ”,并最终合并到 Linux 内核 2.6.24。
2008 年:LXC
LXC(LinuX Containers)是第一个也是最完整的 Linux 容器管理器实现,它是在 2008 年使用 cgroups 和 Linux 命名空间实现的,它可以在单个 Linux 内核上运行,不需要任何补丁。
2011 年:Warden
CloudFoundry 于 2011 年启动 Warden,在早期阶段使用了 LXC,后来用自己的实现替换了它,Warden 可以隔离任何操作系统上的环境,作为守护进程运行并提供用于容器管理的 API,它开发了一个客户端-服务器模型来管理跨多个主机的容器集合,Warden 包括一个管理 cgroup、命名空间和进程生命周期的服务。
2013 年:LMCTFY
Let Me Contain That For You (LMCTFY) 于 2013 年作为 Google 容器栈的开源版本启动,提供 Linux 应用程序容器,
应用程序可以 “ 感知容器 ”,创建和管理它们自己的子容器,
在 Google 开始将核心 LMCTFY 概念贡献给 libcontainer(现在是 Open Container Foundation 的一部分)之后,
于 2015 年停止了 LMCTFY 的主动部署。
2013 年:Docker
当 Docker 于 2013 年出现时,容器技术开始大受欢迎,Docker 的增长和容器的使用齐头并进,并非巧合。
和 Warden 一样,Docker 最初也使用了 LXC,后来用自己的库 libcontainer 替换了这个容器管理器,但是毫无疑问,Docker 通过为容器管理提供完整的生态系统而将自己与其他产品区分开来。
2016 年:人们意识到了容器安全的重要性
随着基于容器的应用程序被广泛采用,系统变得越来越复杂,风险也随之增加,这使得人们开始重视容器的安全问题,像 dirty COW 这样的漏洞进一步地加深了对于容器安全性的思考,这促使软件开发生命周期中的安全性得到了更进一步的思考,使安全成为了容器应用开发中每个阶段的关键部分,这个模式也被称为 DevSecOps,其目标就是在不影响上市时间的前提下,从最开始构建安全的容器。
2017:容器工具变得成熟
人们已经开发出了数百种工具来让容器管理变得更简单,虽然这些工具已经存在了许多年,但直到 2017 年,其中的许多工具才算获得了真正的认可,例如 Kubernetes,在 2016 年被 Cloud Native Computing Foundation (CNCF) 采用后,VMWare、Azure 、AWS 甚至 Docker 都宣布会在它们各自的基础设施之上对 Kubernetes 提供支持。
虽然市场仍在增长,但一些工具已经开始对容器社区中的某些功能作出定义,Ceph 和 REX-Ray 为 容器存储 设定了标准,而 Flannel 将组成数据中心的数百万个容器连接起来,在 CI/CD 中,Jenkins 正在彻底改变我们构建和部署应用程序的方式。
CNCF 采用了 rkt 和 Containerd,社区的努力与开源项目的承诺为容器的生态提供了动力,Docker 在 2017 年将 Containerd 项目捐赠给 CNCF 就是这种理念的一个象征性事件,而 CNCF 在差不多的时间采用了 rkt (发音为 “ rocket ”)容器运行时,这导致了项目之间更加广泛的协作,使用户有了更多的选择,并且形成了一个以改进容器生态为核心的社区。
Kubernetes 的成长,2017 年,开源项目在成为更成熟的技术方面取得了长足的进步,Kubernetes 可以 支持 越来越复杂的应用程序类型 —— 使企业能够过渡到混合云与微服务,在哥本哈根的 DockerCon 上,Docker 宣布他们将支持 Kubernetes 的容器编排器,Azure 和 AWS 也开始支持 Kubernetes,Azure 推出了 AKS(Azure Kubernetes Service),AWS 推出了 EKS (一种与专有 ECS 竞争的 Kubernetes 服务),它也是 CNCF 采用的第一个项目,控制了越来越多的第三方系统集成服务供应商。
2018 年:黄金标准
2018 年,容器化成为现代软件基础设施的基础,Kubernetes 被用于大多数企业级容器项目,2018 年,GitHub 上的 Kubernetes 项目有超过 1500 名贡献者,拥有最重要的开源社区之一,拥有超过 27000 颗星,Kubernetes 的大规模采用推动了像 AWS、Google 的 GKE(Google Kubernetes Engine)、Azure 和 Oracle 的 Container Engine for Kubernetes 这样的云供应商提供托管 Kubernetes 服务,此外,VMWare、RedHat 和 Rancher 等领先的软件供应商也开始提供基于 Kubernetes 的管理平台。
基础设施供应商 VMware 在 2018 年底宣布收购 Heptio,这是一家帮助企业部署和管理 Kubernetes 的咨询公司,VMware 从此开始采用 Kubernetes。
我们还目睹了新的混合技术的兴起,这些技术将类 VM 隔离与容器技术的速度结合起来像 Kata containers 、gVisor 和 Nabla 这样的开源项目,试图通过轻量级虚拟机提供安全的容器运行时这些虚拟机的执行方式与容器相同,但提供了更强的工作负载隔离。
2019 年:不断变化的景观
这一年容器技术的景观发生了重大变化,新的运行时引擎开始取代 Docker 运行时引擎,最引人注目的就是 containerd,一个开源的容器运行时引擎,另外还有 CRI-O,一个轻量级的 Kubernetes 运行时引擎。
在 2019 年,容器领域发生了结构性的转变,当时 Docker Enterprise 被收购并拆分,直接导致了 Docker Swarm 的两年生命终止期,与此同时,rkt 容器引擎的流行度开始下降,虽然官方上它还是 CNCF 稳定版的一部分。
VMware 则是首先收购了 Heptio,随后又收购了 Pivotal Software(同时拥有 PAS 和 PKS),加倍兑现了对 Kubernetes 的承诺,这么做是为了让企业能够在它们自己管理的环境中利用云原生部署的类云(cloud-like)能力。
这一年,我们还看到了 serverless 技术应用的进展,例如使用像 Knative 这样的平台,Knative 是一个基于 Kubernetes 的 serverless 工作负载管理平台,获得了许多组织的青睐。
2019 年还推出了基于 Kubernetes 的混合云(hybrid-cloud)解决方案,如 IBM Cloud Paks,Google Anthos,Aws Outposts,和 Azure Arc,这些云平台模糊了云和本地环境之间的传统界限,让企业可以同时管理本地的和单一供应商的云集群。
我们相信,这些新能力的出现代表了 Kubernetes 演进的下一个阶段,像 Anthos、Arc 和 Outposts 这样的新的云能力,都指向了一个高度抽象的未来,计算资源将从管理层中解耦,就像 Kubernetes 所做的那样。
在今天的 Kubernetes 中,主节点与工作节点位于同一个物理集群中,通过高度抽象,管理平面管理的工作负载可以位于分布在多个计算基础设施上的节点中,用户不用关心这些负载在物理上运行在哪里。
从 KubeCon 圣地亚哥站创纪录的 12,000 多名与会者来看,我们相信 Kubernetes 在未来会成为容器、虚拟机和其他云原生工作负载的标准管理平台。