【docker】2. 编排容器技术发展史(了解)

该篇文章介绍的主要是编排以及容器技术的发展史(了解即可),如果想单纯学习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 为提供了一整套的解决方案,不仅解决了容器化问题,而且解决了分发问题,很快被各大厂商选择变成了云基础设施,厂商围绕 Docker 也开始了生态建设。

云原生时代

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 等公司,也陆续加入。

2014 年 12 月 CoreOS 发布开源容器引擎 Rocket(rkt)

2014 年底,CoreOS 正式发布了 CoreOS 的开源容器引擎 Rocket(简称 rkt),和Docker 正式分开发展。Google 于 2015 年 4 月领投 CoreOS 1200 万美元,而CoreOS 也发布了 Tectonic,成为首个支持企业版本 kubernetes 的公司。从此,容器江湖分为两大阵营,Google 派系和 Docker 派系。

2015 年 Docker 推出容器集群编排组件 Swarm

在 Docker 1.12 及更高版本中,Swarm 模式与 Docker 引擎集成,为 Docker 容器提供原生集群管理功能。
两大派系的竞争愈演愈烈,行业标准的诉求越来越强烈。

2015 年 6 月 Docker 成立 OCI

Docker 公司在容器运行因为高速迭代导致变更频繁,影响较大。
2015 年 6 月 22 日,由 Docker 公司牵头,CoreOS、Google、RedHat 等公司共同宣布,Docker 公司将 Libcontainer 捐出,并改名为 RunC 项目,交由一个完全中立的基金会管理,然后以 RunC 为依据,大家共同制定一套容器和镜像的标准和规范。
RUNC 的本质就是可以不通过 Docker Damon 直接运行容器。
规范就是 OCI,旨在“制定并维护容器镜像格式和容器运行时的正式规范(OCI Specifications)”。其核心产出是 OCI Runtime Spec(容器运行时规范)、OCI Image Spec(镜像格式规范)、OCI Distribution Spec(镜像分发规范)。所以 OCI 组织解决的是容器的构建、分发和运行问题。
社区们期望通过标准来约束 Docker 公司的话语权,不过 Docker 公司并没有积极推动OCI 的发展,而且 OCI 也无法影响 Docker 的地位,因为 Docker 已经是事实的容器标准。
Google 和 RedHat 等公司将方向调转到容器上面的平台层。

2015 年 7 月 Google 带头成立 CNCF

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

k8s 成为云原生事实标准

2016 年 发布 CRI 标准

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

2016 年 Docker 捐献 containerd

containerd 作为运行时标准,Docker 从 Docker Engine 种剥离出来,捐献给 CNCF.这个时候 Google 为了将 containerd 加入到 cri 标准中,又开发了 cri-containerd,用来完成 k8s 和容器之间的交互。

2016 年 CRI-O 发布

CRI-O 可以让开发者直接从 Kubernetes 来运行容器,这意味着 Kubernetes 可以不依赖于传统的容器引擎(比如 Docker),也能够管理容器化工作负载。容器此时也回归到自己的位置,如何更好的封装云原生的程序。
在 2016 年,Docker 公司宣布了一个震惊全部人的计划:放弃现有的 Swarm 项目,将容器编排和集群管理功能所有内置到 Docker 项目中。
而 Kubernetes 的应对策略则是反其道而行之,开始在整个社区推动“民主化”架构,从API 到容器运行时的每一层,Kubernetes 项目都为开发者暴露出了能够扩展的插件机制,鼓励用户经过代码的方式介入到 Kubernetes 项目的每个阶段。
在进入 2017 年之后,更多的厂商愿意把宝压在 K8S 上,投入到 K8S 相关生态的建设中来。这两年包括阿里云、腾讯、百度等中国科技企业也陆续加入 CNCF,全面拥抱容器技术与云原生。
Swarm 的失败后, 社区版 Docker 项目改名为 moby,将 Docker 引流到 Docker 的企业版上去,螳臂挡车。

2017 年 containerd 确定作为标准 CRI

2017 年各大厂商都开始拥抱 Kubernetes,亚马逊 AWS,Microsoft Azure,VMware,有的甚至抛弃了自家的产品。
亚马逊网络服务(AWS)于八月份以白金会员(最高级别)加入了 CNCF。
VMware 都作为 CNCF 的白金会员注册.
Docker Inc.ocker 企业版框架中添加了本地 Kubernetes 支持。Docker 自己的 Swarm
技术也借鉴了 k8s 的技术进一步发展。
Kubernetes 已成了容器编排领域的绝对标准, Docker 已成容器事实的标准。

编排与容器的技术演进之路

核心问题:容器哪些技术过时了

DockerClient

此时 K8s 只是编排领域的一个选择,而 Docker 此时一家独大,所以 K8s 的客户端只是作为 Docker 的客户端来调用 Docker 引擎来完成服务。
在这里插入图片描述

RUNC&Shim

OCI 催生 runc,剥离 Docker Engine 的一家独大的情况,确保各个厂商都可以搭建自己的容器平台。CRI 标准确立了但是 Docker 并没有接入该标准。此时催生了临时技术shim.
在这里插入图片描述

CRI-Containerd

containerd 被捐献出来,谷歌开发 cri-containerd 接入 CRI 标准。

在这里插入图片描述

CRI-O

k8s 已经成为事实的编排标准,促使容器回归云原生本质。
在这里插入图片描述

Containerd

containerd 实现 CRI,成为 CRI 的事实标准
在这里插入图片描述
实际生产的集群采用的什么运行时组件?
以腾讯的 TKE(腾讯商用 K8S 产品)为例,支持选择 containerd 和 docker 两种模式的选择。
如何选择呢?

  1. Containerd 调用链更短,组件更少,更稳定,占用节点资源更少。建议选择Containerd。
  2. 以下情况还是要用 docker
    • 使用 docker build/push/save/load 等命令。
    • 调用 docker API
    • 需要 docker compose 或 docker swarm。

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

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

相关文章

mac单机游戏推荐:帝国时代2 for Mac中文安装包

帝国时代2是一款经典的即时战略游戏,由微软游戏工作室开发。玩家可以选择从欧洲、亚洲或美洲的不同文明开始游戏,建立自己的帝国并与其他文明进行战争、贸易和外交。游戏中包含了丰富的历史背景和真实的历史事件,玩家需要策略性地管理资源、招…

【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板

目录 一、引言 二、TTS(text-to-speech)模型原理 2.1 VITS 模型架构 2.2 VITS 模型训练 2.3 VITS 模型推理 三、ChatTTS 模型实战 3.1 ChatTTS 简介 3.2 ChatTTS 亮点 3.3 ChatTTS 数据集 3.4 ChatTTS 部署 3.4.1 创建conda环境 3.4.2 拉取源…

Java项目毕业设计:基于springboot+vue的幼儿园管理系统

数据库:MYSQL5.7 **应用服务:Tomcat7/Tomcat8 使用框架springbootvue** 项目介绍 管理员;首页、个人中心、用户管理、教师管理、幼儿信息管理、班级信息管理、工作日志管理、会议记录管理、待办事项管理、职工考核管理、请假信息管理、缴费信息管理、幼儿请假管理…

【漏洞复现】极限OA video_file.php 任意文件读取漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

开源最强AI一键抠图一键去背景模型RMBG-1.4

目录 前言训练数据图像分布:定性评估 应用场景安装用法 前言 RMBG v1.4 是BRIA AI最先进的背景去除模型,旨在有效地将各种类别和图像类型的前景与背景分开。该模型已在精心选择的数据集上进行训练,其中包括:一般库存图片、电子商…

疲劳驾驶智能识别摄像机

疲劳驾驶智能识别摄像机在道路安全管理中扮演着越来越重要的角色。这些先进的设备不仅仅是简单的监控工具,它们通过先进的技术和算法,有效地识别和预防司机疲劳驾驶,从而大大减少了交通事故的风险。 首先,这些智能识别摄像机采用高…

2024年希望杯数学竞赛各年级100道练习题及答案

链接里面有无答案版本链接:https://pan.baidu.com/s/1nTIVJrTEWUzb0LJNo4mI_Q 提取码:0548 –来自百度网盘超级会员V7的分享 一年级 二年级 三年级 四年级 五年级 六年级 七年级 八年级

【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间:2023-12-16 1 介绍 年份:2017 作者:Ronald Kemker,美国太空部队;Christopher Kanan,罗切斯特大学 期刊: arXiv preprint 引用量:520 Kemker R, Kanan C. Fearnet: Brain-…

基于Java中的SSM框架实现萌宠优购系统项目【项目源码】计算机毕业设计

基于Java中的SSM框架实现萌宠优购系统演示 研究背景 现在人们在生活中、工作中压力与日俱增,而宠物也在人们的生活扮演者越来越重要的角色。然而,对于一些宠物爱好者来说,宠物早已经是他们生活中不可或缺的一部分。因为宠物能与人有心灵的沟…

计算机进入安全模式

最近老是蓝屏------显示是REGISTRY_ERROR(注册表错误) 重启之后选择进入安全模式 我重启之后,按F8进不了安全模式。通过另一种方式进入,按住Shift键再按重启 重启之后出现以下界面 选择疑难解答,再选择高级选项 在高…

20240623日志:大模型压缩-sliceGPT

context 1. 剪枝方案图释2. 正交矩阵Q 1. 剪枝方案图释 Fig. 1.1 剪枝方案 图中的阴影是表示丢弃掉这部分数据。通过引入正交矩阵 Q Q Q使 Q ⊤ Q Q Q ⊤ I \mathrm{Q}^\top\mathrm{Q}\mathrm{Q}\mathrm{Q}^\top\mathrm{I} Q⊤QQQ⊤I,来大量缩减 X X X的列数和 W …

androidx.preference框架介绍

一,概要 Preference作为setting核心框架,笔者对此框架做一个简单的解析,androidx.preference本质是对设置领域提供了一层View封装,以android view本身的策略模式进行二次开发,将常用的一些设置样式封装到不同的Preference中,以达到快速开发设置相关功能。并且,此风格与…

将 MinIO 与 Keycloak OIDC 集成

Keycloak是一种单点登录解决方案。使用Keycloak,用户使用Keycloak而不是MinIO进行身份验证。如果没有Keycloak,您将不得不为每个用户创建一个单独的身份 - 从长远来看,这将很麻烦。您需要一个集中身份解决方案来管理 MinIO 的身份验证和授权。…

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…

【面试题】漏洞复现的步骤

漏洞复现是信息安全工作中非常重要的一个环节,它通过对已发现的漏洞进行模拟攻击,来验证漏洞的存在性并深入理解其影响。以下是漏洞复现的主要步骤,并尽量以分点表示和归纳的形式呈现: 1. 收集漏洞信息 从漏洞公告、CVE&#xf…

Vue2中的render函数

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用render渲染函数,它比模板更接近编译器 。 在Vue2中,render函数是一个可选的、用于生成虚拟DOM的特殊函数。它是Vu…

国际网络专线怎么开通?

在全球化日益加速的今天,企业越来越需要稳定、高效的网络来支撑他们的跨国业务。国际网络专线,作为外贸企业、出海企业等拓展全球业务的关键基础设施,其重要性不言而喻。那么,企业如何才能开通国际网络专线呢?本文将详…

Amazon Q Developer 实战:从新代码生成到遗留代码优化(下)

简述 本文是使用 Amazon Q Developer 探索如何在 Visual Studio Code 集成编程环境(IDE),从新代码生成到遗留代码优化的续集。在上一篇博客《Amazon Q Developer 实战:从新代码生成到遗留代码优化(上)》中…

docker常见问题-持续更新

docker 启动的问题解决 解决: 下载更新linux的win子系统, 重启就可以 WSL 2 installation is incomplete. 更加报错提示,猜测可能是我们使用的wsl2版本老了,需要我们自己手动更新一下,我们根据提示去微软官网下载最新版的wsl2安装后即可正常打开。更新包下载链接。 https://ws…

HBase:大数据时代的分布式存储利器

HBase:大数据时代的分布式存储利器 HBase:大数据时代的分布式存储利器1. HBase简介2. HBase特点3. HBase应用场景4. 总结 HBase:大数据时代的分布式存储利器 随着互联网和大数据技术的飞速发展,数据存储和计算需求呈现出爆炸式增…