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

相关推荐
小袁搬码22 分钟前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
吃肉不能购33 分钟前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫37 分钟前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920111 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon1 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫1 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
黑牛先生1 小时前
【Linux】进程-PCB
linux·运维·服务器
Karoku0661 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
条纹布鲁斯2 小时前
dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
docker·kubernetes
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql