Docker——容器技术的发展

容器技术发展史

一、Jail时代

​ 1979年,贝尔实验室发明了chroot;当一个系统软件编译完成之后,整个测试环境的变量便会发生变化;chroot就是将一个进程的文件系统进行隔离,将不同进程的的根目录发生改变;这种被隔离出来的新环境就像是监狱一样,所以被命名为Chroot Jail(监狱),后续信息就全部放到了Jail中;这种模式只是隔离了文件

​ FreeBSD Jail不仅仅进行了文件系统的隔离,并且扩充了独立的进程和网络空间;

​ Linux Server也是一种监狱机制,对文件系统,网咯地址,内存进行了分区;

​ Solaris Containers对系统资源进行了隔离,并添加了快照和隔离能力;

​ 总结:就是对进程相关的资源,内存,网络进行了隔离;

二、云时代

​ 2006年Goolge 101计划提出了云的概念;当数据量比现在多1000乃至更多倍时,需要使用大量的基础设备,各大商业公司支持了云服务器提供给用户去购买;此时不仅仅需要进行进程隔离,还需要对资源进行控制;

​ 2006年Google推出了cgroups主要用来进行资源的控制(CPU、内存、磁盘I/O、网络),最终合并到了Linux中,其实在Linux2.4版本中就出现了命名空间技术实现隔离;

​ 2008年LXC推出,是Linux容器管理器的第一个、最完整的实现。使用cgroups和Linux命名空间实现;同时还使用了Borg(kubernetes的前身)对容器进行编排和调度;LXC和Borg就相当于是最早的docker和k8s;

​ 2013年docker推出风靡全球,不仅仅使用了资源控制资源隔离,还解决了分发问题;

三、云原生时代

​ 云原生其实就是微服务化、容器化,并且支持devops理念;devops理念就是,可以以快速自动化部署大批服务和升级;

​ 2013年Docker公司不满现状,开始生态扩张,CoreOS(专为容器设计的操作系统)终止与Docker的合作;

​ 2014年Google发布容器编排引擎Kubernetes(k8s),完成了对生态的闭环;同年CoreOS发布了开源容器引擎Rocket,Google投资支持了CoreOS k8s技术,从此形成了两大容器派系;

​ 2015年Docker也推出了Swarm容器编排组件;

​ 容器迭代更新较快影响较大,于是在2015年与CoreOS、Google、RedHat等公司共同宣布Docker公司将Libcontainer捐出,改名为RunC 项目,由一个中立的基金会管理,并且共同制定了一套容器与镜像的规范和标准,成立了OCI组织;

​ 同年Google 联合 Linux 基金会成立 CNCF (Cloud Native Computing Foundation)云原生计算基金会。旨在构建云原生基础设施。K8S 是第一个纳入进来的项目,像后续有名的监控设施 Prometheus,配置设施 ETCD 都加入进来。CNCF 组织解决的是应用管理及容器编排问题。和 OCI 共同制定了一系列行业事实标准。

​ 2016年发布了CRI标准。Google 就和红帽主导了 CRI 标准,用于 k8s 和特定的容器运行时解耦。CRI(Container Runtime Interface 容器运行时接口)本质上就是 k8s 定义的一组与容器运行时进行交互的接口,所以只要实现了这套接口的容器运行时都可以对接 k8s。但是这个适合 Docker 还是事实标准,并 CRI 并没有话语权,但是又必须支持 Docker,所以就有了 dockershim,dockershim 的本质其实就是 k8s 对接 docker 的一个 CRI 的实现。

​ 同年Docker捐献containerd给CNCF;Google为了将containerd加入到cri标准,开发了cri-containerd,用来完成k8s与容器之间的交互;

​ 2016年,CRI-O发布,使得k8s支持直接运行容器,不需要通过容器引擎,此时容器更加纯粹,更加关心如何封装云原生程序;docker放弃Swarm,将所有容器编排功能和集群管理技术内置到了docker中,而Google则是让用户参与到k8s项目的每一层,所以最终k8s获胜;最终k8s成为了编排标准

​ 2017年,最终运行时标准为,containerd作为标准CRI

相关推荐
阿明62 小时前
Linux进程【Linux】
linux·运维·服务器
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_resampler_update调用流程与实战(三十)
linux·运维·服务器·gstreamer音视频·音视频进阶
微信ipad协议开发3 小时前
微信视频号自动化:内容发布与互动的 API 实现
运维·微信
溪语流沙4 小时前
Django + Vue电商项目第001讲:开篇|注册登录加增删改查,那不是电商
redis·python·mysql·docker·typescript·django·vue
一直在努力学习的菜鸟5 小时前
Docker Info 详细解析(Rocky Linux 8.10 / Docker 29.8.1)
docker
小马同学-5 小时前
crictl实战:K8s容器运行时排障工具
容器·k8s·crictl
蓝速科技6 小时前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
逐流人6 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
AlfredZhao6 小时前
Docker 删除 none 镜像:一次真实的清理记录
docker
酣大智9 小时前
网络协议计时器 & 发包间隔汇总
运维·网络·tcp/ip