🎬 博客主页:博主链接
🎥 本文由 M malloc 原创,首发于 CSDN🙉
🎄 学习专栏推荐:LeetCode刷题集
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 未来很长,值得我们全力奔赴更美好的生活✨
😇本章详情
🐤本篇文章将讲述Docker容器的技术发展史
😇Jail时代
😁容器不是一个新概念或者新技术,很早就有了,只是近几年遇到了云计算,整个技术被彻底引爆了。
😇1979 年 贝尔实验室发明 chroot
📑chroot 系统调用是在 1979 年开发第 7 版 Unix 期间引入的。贝尔实验室在 Unix V7 的开发过程中,发现当一个系统软件编译和安装完成后,整个测试环境的变量就会发生改变,下一次测试需要重新配置环境信息。
设计者们思考能否隔离出来一个独立的环境,来构建和搭建测试环境,所以发明了
chroot,可以把一个进程的文件系统
隔离起来
chroot 系统调用可以将进程及其子进程的根目录更改为文件系统中的新位置。隔离以
后,该进程无法访问到外面的文件,因此这个被隔离出来的新环境像监狱一样,被命
名为 Chroot Jail (监狱)。后续测试只需要把测试信息放到 Jail 中就可以完成测试了。
这一进步是进程隔离的开始:为每个进程隔离文件访问。所以 chroot 可以认为是容器
技术的鼻祖。
😇2000 年 FreeBSD 4.0 发行 FreeBSD Jail
前言
2000 年,当时一家小型共享环境托管提供商提出了 FreeBSD Jail,以实现其服务与其客户服务之间的明确分离,以实现安全性和易于管理。每个 Jail 都是一个在主机上运行的虚拟环境,有自己的文件、进程、用户和超级用户帐户,能够为每个系统分配一个IP 地址。
FreeBSD Jail 不仅仅有 chroot 的文件系统隔离,并且扩充了独立的
进程和网络空间
。
😇2001 年 Linux VServer 发行
💐与 FreeBSD Jails 一样,Linux VServer 是一种监狱机制,可以对计算机系统上的资源
(文件系统、网络地址、内存)进行分区。
😇2004 年 Solaris Containers 发行
2004 年, Solaris Containers 的第一个公开测试版发布,结合系统资源控制和区域进
行隔离,并添加了快照和克隆能力。
这个时期的进程隔离技术大多以 Jail 模式为核心,基本实现了进程相关资源的隔离操作,没有更大的应用场景发展有限。
😇云时代
2006 年,
Google 101 计划提出云
的概念,对当前的主流开发模式产生深远的影响。也许以后我们会更多考虑如果出现比现在多 1000 倍, 10000 倍的数据量的时候,我们该如何处理?要想让”云”发挥潜能,与此相关的编程和操作就应该与使用互联网一样简单。随后,亚马逊、IBM 等行业巨头也陆续宣布各自的“云”计划,宣告“云”技术时代的来临。
云计算需要处理海量数据、超高并发、快速扩展等问题,此时不仅仅需要隔离还需要能够对资源进行控制和调配。
😇2006 年 google 推出 Process Containers
提示
Process Containers(由 Google 于 2006 年推出)旨在限制、统计和隔离一组进程的
资源使用
(CPU、内存、磁盘 I/O、网络)。一年后它更名为“Control Groups (cgroups)”,并最终合并到 Linux 内核 2.6.24
😇2008 年 LXC 推出
LXC(Linux 容器)是 Linux 容器管理器的第一个、最完整的实现。它是在 2008 年使
用cgroups
和Linux 命名空间
实现的,它可以在单个 Linux 内核上运行,不需要任何
补丁。
同年谷歌推出 GAE(Google App Engine),首次把开发平台当做一种服务来提供,采
用云计算技术,跨越多个服务器和数据中心来虚拟化应用程序。
同时 Google 在 GAE 中使用了 Borg (Kubernetes 的前身)来对容器进行编排和调度。
LXC 和 Borg 其实就相当于最早的 docker 和 k8s.
😇2011 年 CloudFoundry 推出 Warden
⭐2011 年启动了 Warden,早期使用 LXC,后来替换为自己的实现,直接对 Cgroups 以及 Linux Namespace 操作。开发了一个
客户端-服务器模型
来管理跨多个主机的容器
集合,并且可以管理 cgroups、命名空间和进程生命周期。
😇2013 年 LMCTFY 启动
概要
🌕Let Me Contain That For You (LMCTFY) 于 2013 年作为 Google 容器堆栈的开源版本启动,提供 Linux 应用程序容器。应用程序可以“容器感知”,创建和管理它们自己的
子容器
。在谷歌开始和 docker 合作,后续转向了 docker 公司的 libcontainer,LMCTFY 的于 2015 年停止。
😇2013 年 Docker 推出到风靡全球
Docker 最初是一个叫做 dotCloud 的 PaaS 服务公司的内部项目,后来该公司改名为Docker。Docker 在初期与 Warden 类似,使用的也是 LXC,之后才开始采用自己开发的 libcontainer 来替代 LXC,它是将应用程序及其依赖打包到几乎可以在任何服务器上运行的容器的工具。与其他只做容器的项目不同的是,Docker 引入了一整套管理容器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的 REST API、命令行等等。
Docker 最初是一个叫做 dotCloud 的 PaaS 服务公司的内部项目,后来该公司改名为 Docker。Docker 在初期与 Warden 类似,使用的也是 LXC,之后才开始采用自己开发 的 libcontainer 来替代 LXC,它是将应用程序及其依赖打包到几乎可以在任何服务器 上运行的容器的工具。与其他只做容器的项目不同的是,Docker 引入了一整套管理容 器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰 的 REST API、命令行等等。
😇云原生时代
😇Google &Docker 竞争
😇2013 年 CoreOS 发布和 Docker 由合作终止
🌞技术革命带来新的市场机遇,CoreOS 也是其中的一员,在容器生态圈中贴有标签:专为容器设计的操作系统 CoreOS。作为互CoreOS+Docker 曾经也是容器部署的灵魂伴侣。CoreOS 为 Docker 的推广和源码社区都做出了巨大的贡献。
Docker 生态扩张
,与最开始是“一个简单的基础单元”不同,Docker 也在通过开发或收购逐步完善容器云平台的各种组件,准备打造自己的生态圈,而这与 CoreOS 的布局有直接竞争关系。
😇2014 年 6 月 Google 发布开源的容器编排引擎 Kubernetes(K8S)
容器只是解决了容器化,分发问题,但是一个软件的
网络问题、负载均衡问题、监控、部署、更新、镜像管理、发布等很多问题
并没有有效的解决。
Google 内部调度系统 Borg 已经拥有 10 多年的使用容器经验,在 2014 年 6 月推出了
开源的 K8S,可以支持对容器的编排和管理,完成生态的闭环。
同年 7 月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere 和 Saltstack 等公司,相继加入 K8S。之后的一年内,VMware、HP、Intel 等公司,也陆续加入。
🤣本文小结
好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!