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

相关推荐
山东布谷科技官方2 分钟前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks3 分钟前
渗透测试-Linux基础(1)
linux·运维·安全
爱吃喵的鲤鱼7 分钟前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler19 分钟前
Linux系统-ubuntu系统安装
linux·运维·云计算
向阳121825 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
MonkeyKing_sunyuhua1 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林2 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac