容器的诞生
容器技术的奠基
2000:FreeBSD 4.0(Unix)
Jail:加强和改进了用于文件系统隔离的chroot环境
(chroot就是change root,也就是改变程式(应用)执行时所参考的根目录位置
2004:Solaris 10(Unix) --Sun
Zones:实现了命名空间隔离和安全访问控制
Resource management:实现了资源分配控制
2007:Kernel 2.6.24(Linux)
Control Groups(简称cgroups)进入Linux内核,
可以限定/隔离一组进程所使用的资源(包括CPU、内存、I/O和网络等)
附加一些历史节点:
2007:第一代Iphone发布
2008.1.16:Sun宣布10亿美元收购Mysql
2009.04.20:Oracle收购Sun,同年阿里云诞生
容器生态的奠基
2008:云服务的发展初期
2008年云计算发展初期,主流用户的普遍用法,就是租一批 AWS 或者 OpenStack 的虚拟机,然后像以前管理物理服务器那样,用脚本或者手工的方式在这些机器上部署应用。
手工部署,效率低
2011:Cloud Foundry—“Paas时代要来了”
Cloud Foundry 项目吸引了包括百度、京东、华为、IBM 等一大批国内外技术厂商,其最核心的组件就是一套应用的打包和分发机制;且由于每种语言的差异,它为每种主流编程语言都定义了一种打包格式,然后调用操作系统的 Cgroups 和 Namespace 机制为每一个应用单独创建一个称作“沙盒”的隔离环境,然后在“沙盒”中启动这些应用进程
开发语言多样,部署复杂
PaaS 之所以能够帮助用户大规模部署应用到集群里,是因为它提供了一套应用打包的功能。可偏偏就是这个打包功能,却成了 PaaS 日后不断遭到用户诟病的一个“软肋”。
docker的出现
2013:dotCloud宣布开源docker(加州)
dotCloud 的创始人兼首席执行官 Solomon Hvkes 在一场仅五分钟的微型演讲中,首次提出了 Docker 这一概念。
与Cloud Foundry项目最大的不同是docker引入了image这个打包机制,这个打包机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。
什么是容器
集装箱
货运的标准化结构和规格,不仅能提高集装箱作为共同运输单元在海、陆、空运输中的通用性和互换性,而且能够提高集装箱运输的安全性和经济性,促进国际集装箱多式联运的发展。
–[百度百科中的定义]
容器
对应到docker容器上
标准化结构和规格:应用运行的所有环境依赖的镜像
海、陆、空:开发/生产、私有云/公有云兼容
“安全性”和经济性:资源隔离和资源限制
容器编排
单机容器编排–fig(被收购后改名为compose)
单体应用在信息爆发的当下是无法支持大量请求,一个系统的正常运作往往需要多个应用相互依赖地运作,所以fig是容器在单机容器编排上的最佳体现。
K8s、Swarm—集群容器编排
2014:Google和Docker公司相继发布自家的容器编排项目