1.容器的历史
容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的。
2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离。
2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器。
2005 年推出 OpenVZ,它通过对 Linux 内核进行补丁来提供虚拟化的支持,每个 OpenVZ 容器完整支持了文件系统、用户及用户组、进程、网络、设备和 IPC 对象的隔离。
2007 年 Google 实现了 Control Groups( cgroups ),并加入到 Linux 内核中,这是划时代的,为后期容器的资源配额提供了技术保障。
2008 年基于 cgroups 和 linux namespace 推出了第一个最为完善的 Linux 容器 LXC。
2013 年推出到现在为止最为流行和使用最广泛的容器 Docker,相比其他早期的容器技术,Docker 引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API。
2014 年 CoreOS 也推出了一个类似于 Docker 的容器 Rocket,CoreOS 一个更加轻量级的 Linux 操作系统,在安全性上比 Docker 更严格。
2016 年微软也在 Windows 上提供了容器的支持,Docker 可以以原生方式运行在 Windows 上,而不是需要使用 Linux 虚拟机。
基本上到这个时间节点,容器技术就已经很成熟了,再往后就是容器云的发展,由此也衍生出多种容器云的平台管理技术,其中以 kubernetes 最为出众,有了这样一些细粒度的容器集群管理技术,也为微服务的发展奠定了基石。因此,对于未来来说,应用的微服务化是一个较大的趋势。
为什么需要容器
其一,这是技术演进的一种创新结果,其二,这是人们追求高效生产活动的一种工具。
随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器、公有云、私有云等,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同而去进行相应的定制,就显得尤为重要。
就像货物的运输问题一样,如何将不同的货物放在不同的运输机器上,减少因货物的不同而频繁进行货物的装载和卸载,浪费大量的人力物力。
为此人们发明了集装箱,将货物根据尺寸形状等的不同,用不同规格的集装箱装载,然后再放到运输机上运输,由于集装箱密封,只有货物到达目的地才需拆封,在运输过程能够再不同运输机上平滑过渡,所以避免了资源的浪费。
Injection
javava EE CDI主要使用@Inject批注,以便将托管bean的依赖注入执行到其他容器托管资源。
容器本身与其生态系统的发展
- 容器技术标准
容器相关的技术标准的诞生将促进整个大系统的各方更好的协调和兼容。
- 云计算平台的支持
现有云计算平台要么尽快支持容器技术,要么被新的支持容器的云计算平台超越。中国香港、上海、深圳、青岛、天津在上世纪60~80年代抓住了集装箱发展的机遇,成为全球供应链上的主要枢纽港,2014年仍处在全球10个最大吞吐量集装箱港之列。
- 使用容器的习惯逐渐形成
培养应用发布者使用容器发布应用的习惯是非技术问题,也需要时间去沉淀。全球运输业花了近15年培养出了发货商使用集装箱的习惯,在互联网行业不需要这么慢。
- 行业规模
Mesos, Kubernetes等容器管理方案将助力 “巴拿马级”,“马六甲级”[见注释2]的容器“轮船”。Mesos, Kubernetes等成熟通用的集群管理方案将为你做好大规模分布式容器的启停、调度、编排、高可用。与现有的大部分互联网服务类似,容器依赖于规模,云计算平台服务的客户越多,运行的容器规模越大,构建整套容器运行体系的固定成本就被分摊得越薄,客户使用云计算服务的资费就能降下来。
- 应用在云计算平台间的无缝迁移
未来的应用在不同的云计算平台(支持容器)间迁移成本更低。如同集装箱在汽车、火车、集装箱船之间的无缝迁移。
在未来世界,云计算不止是互联网的公共基础服务,也是被互联网渗透的所有行业的公共基础服务,公有云也好,私有云也罢,几乎所有的信息服务都将在云上。从集装箱诞生到运输业广泛采用集装箱,大宗货物运输成本普遍减少50%以上,耗费了约60年。我相信在互联网领域,容器的普及都用不了6年,希望在这个互联网基础服务里掘金的企业,请跑步入场!