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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Markdown入门语法笔记

Markdown入门语法笔记 引言 Markdown是一种轻量级的文本标记语言,基于“内容才是本质”的理念进行设计,排版格式简洁自然,让创作者将更多时间集中在内容创作而非排版上。Markdown在当今世界上应用非常广泛,论文排版、说明文档、…

2024年跨平台应用解决方法

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 很久没有写这类high-level的文章了,本身这类框架就一直层出不穷,但是其中历久弥坚,坚韧不拔的框架又有多少呢? 首先考虑到学习成本以及掌握一些编程语言在工作、学习生态上的价值,给这些东西适用生态划分一下. Reac…

tippecanoe-enumerate解释解释和使用示例

tippecanoe-enumerate 是 Tippecanoe 工具集中的一个实用命令,用于枚举和显示 MBTiles 文件中的所有瓦片信息。它可以帮助您查看和验证 MBTiles 文件中包含的瓦片数量、缩放级别、坐标等详细信息。这对于了解数据的分布和结构非常有用。 主要功能 枚举瓦片:列出 MBTiles 文件…

CentOS7 MySQL5.7.35主从 不停机搭建 以及配置

如需安装MySQL,参照MySQL 5.7.35 安装教程 https://blog.csdn.net/CsethCRM/article/details/119418841一、主&从 环境信息准备 1.1.查看硬盘信息,确保磁盘够用(主&从) df -h1.2.查看内存信息 (主&从&am…

Ansible——cron模块

目录 参数总结 示例1:创建一个定时任务 示例2:删除一个定时任务 示例3:每周一早上 3 点清理临时文件 示例4:每小时运行一次日志轮转 示例5:为指定用户添加一个定时任务 Playbook (YAML 格式) 中管理定时任务。 …

elasticsearch安装与使用(4)-搜索入门

1、创建索引 PUT /hotel {"mappings": {"properties":{"title":{"type": "text"},"city":{"type": "keyword"},"price":{"type":"double"}}} }2、写入文档 …

sentaurus修改界面字体

修改界面字体,view——table options——change table 在出现的选框中选择使用系统默认或者自定义字体

VBA经典应用69例应用5:使用VBA冻结窗格

《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便…

代码随想录算法训练营第36期DAY49

DAY49 139单词拆分 没有思路。 回溯法 回溯怎么做呢:拼接str,看能不能拼出来。注意每个单词能用多次,不是用了就没。 但是语法还是难写。 自己的思路不好,题解思路:枚举所有分割字符串,判断是否在字典…

力扣每日一题85:最大矩形

题目 困难 相关标签 相关企业 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0",&q…

LeetCode-day06-3040. 相同分数的最大操作数目 II

LeetCode-day06-3040. 相同分数的最大操作数目 II 题目描述示例示例1:示例2: 思路代码 题目描述 给你一个整数数组 nums ,如果 nums 至少 包含 2 个元素,你可以执行以下操作中的 任意 一个: 选择 nums 中最前面两个元…

使用 Django 和 MQTT 构建实时数据传输应用

文章目录 什么是 MQTT?Django 中的 MQTT结论 在现代的 Web 应用程序开发中,实时数据传输变得越来越重要。MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,而 Django 是一个流行的 Pyt…

如何解决访问网站时IP被限制的问题?

在互联网上,用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时,却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象,而导致这种情况的原因多种多样,包括恶意行为、违规访问等。本文将解释IP地…

Linux进程基本概念

基本概念 内核观点:担当分配系统资源(CPU时间,内存)的实体进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合(PCB)在Linux中描述进程的结构体叫做task_structtask_struc…

qt自定义事件过滤器

以下是一个完整的示例&#xff0c;包括如何使用这个事件过滤器的步骤&#xff1a; 1. 定义事件过滤器类 你已经正确定义了 LostFocusFilter 类&#xff0c;这里是完整的定义&#xff1a; #include <QObject> #include <QEvent>class LostFocusFilter : public Q…

自然语言处理:第三十二章HippoRAG:性能提高20% - 受海马体启发的RAG

文章链接: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models 项目地址: OSU-NLP-Group/HippoRAG: HippoRAG is a novel RAG framework inspired by human long-term memory that enables LLMs to continuously integrate knowledge across e…

2024-06-08 问AI: 大语言模型中,思维链CoT是什么?

文心一言 在大语言模型中&#xff0c;思维链&#xff08;Chain-of-Thought, CoT&#xff09;是一种改进的提示策略&#xff0c;旨在提高大语言模型&#xff08;LLM&#xff09;在复杂推理任务中的性能。以下是对思维链CoT的详细解释&#xff1a; 定义&#xff1a; 思维链CoT是…

利用单调栈思路解决递增关系数据问题

利用单调栈思路解决递增关系数据问题 一、题目描述二、解题思路思路1&#xff1a;思路2&#xff1a; 三、代码实现1&#xff1a;暴力法2&#xff1a;单调栈 一、题目描述 在对数据进行排序的过程中&#xff0c;通常采用取1个数作为主元&#xff0c;通过比较交换&#xff0c;把…

学习分享-注册中心Naocs的优雅上下线

前言 学习微服务-分享一下Naocs的优雅上下线 Nacos Nacos&#xff08;Dynamic Naming and Configuration Service&#xff09;是阿里巴巴开源的一款用于动态服务发现、配置管理和服务管理的系统。Nacos 提供了丰富的功能&#xff0c;以便在分布式系统中进行服务管理和配置管…

Vue3 + TS + Antd + Pinia 从零搭建后台系统(一) 脚手架搭建 + 入口配置

简易后台系统搭建开启&#xff0c;分几篇文章更新&#xff0c;本篇主要先搭架子&#xff0c;配置入口文件等目录 效果图一、搭建脚手架&#xff1a;二、处理package.json基础需要的依赖及运行脚本三、创建环境运行文件四、填充vue.config.ts配置文件五、配置vite-env.d.ts使项目…