【Docker】Docker使用之容器技术发展史

news2024/11/20 10:34:53

🎬 博客主页:博主链接
🎥 本文由 M malloc 原创,首发于 CSDN🙉
🎄 学习专栏推荐:LeetCode刷题集
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述
在这里插入图片描述

文章目录

  • 😇本章详情
  • 😇Jail时代
    • 😇1979 年 贝尔实验室发明 chroot
    • 😇2000 年 FreeBSD 4.0 发行 FreeBSD Jail
    • 😇2001 年 Linux VServer 发行
    • 😇2004 年 Solaris Containers 发行
  • 😇云时代
    • 😇2006 年 google 推出 Process Containers
    • 😇2008 年 LXC 推出
    • 😇2011 年 CloudFoundry 推出 Warden
    • 😇2013 年 LMCTFY 启动
    • 😇2013 年 Docker 推出到风靡全球
  • 😇云原生时代
    • 😇Google &Docker 竞争
    • 😇2013 年 CoreOS 发布和 Docker 由合作终止
    • 😇2014 年 6 月 Google 发布开源的容器编排引擎 Kubernetes(K8S)
  • 🤣本文小结

😇本章详情

🐤本篇文章将讲述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 年使
cgroupsLinux 命名空间实现的,它可以在单个 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 最初是一个叫做 dotCloud 的 PaaS 服务公司的内部项目,后来该公司改名为 Docker。Docker 在初期与 Warden 类似,使用的也是 LXC,之后才开始采用自己开发 的 libcontainer 来替代 LXC,它是将应用程序及其依赖打包到几乎可以在任何服务器 上运行的容器的工具。与其他只做容器的项目不同的是,Docker 引入了一整套管理容 器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰 的 REST API、命令行等等。

😇云原生时代

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

🤣本文小结

好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!

在这里插入图片描述

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

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

相关文章

【腾讯云 Cloud Studio 实战训练营】Hexo 框架 Butterfly 主题搭建个人博客

什么是Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。 ​ Hexo 博客成品展示 本人博客如下&…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、论证逻辑——解释

真题(2018-39)-解释-圈出矛盾点-简单题:矛盾点易找,无干扰项 39.我国中原地区如果降水量比往年偏低,该地区的河流水会下降,流速会减缓。这有利于河流中的水草生长,河流中的水草总量通常也会随之…

计算机提示vcruntime140_1.dll丢失的解决方法

在使用Windows操作系统时,有时候我们可能会遇到一些应用程序无法正常运行的问题,出现错误提示,其中之一可能就是缺少或损坏了vcruntime140_1.dll文件。在遇到这种情况时,我们可以尝试修复vcruntime140_1.dll文件来解决问题。 先科…

jenkins pipeline方式一键部署github项目

上篇:jenkins一键部署github项目 该篇使用jenkins pipeline-script一键部署,且介绍pipeline-scm jenkins环境配置 前言:按照上篇创建pipeline任务,结果报mvn,jdk环境不存在,就很疑惑,然后配置全…

编程练习(1)

目录 一.选择题 第一题: 第二题: 第三题: 第四题: 第五题: ​编辑 二.编程题 第一题: 第二题: 1.暴力方法: 2.数组法: 一.选择题 第一题: 解析&…

C++之std::list<string>::iterator迭代器应用实例(一百七十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

深度剖析:内部威胁监测中的 ADAudit Plus 关键作用

在数字时代,企业不仅需要抵御外部威胁,还必须密切关注内部威胁,因为内部因素可能对数据安全造成严重威胁。作为一种强大的内部威胁监测工具,ADAudit Plus 在这一领域发挥着关键作用。本文将深入探讨 ADAudit Plus 在内部威胁监测中…

【JUC】线程池ThreadPoolTaskExecutor与面试题解读

1、ThreadPoolTaskExecutor 创建线程池 从它的创建和使用说起,创建和使用的代码如下: 创建: ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(corePoolSize);executor.setMaxPoolSize(maxPoolSize…

W5500-EVB-PICO做UDP Client进行数据回环测试(八)

前言 上一章我们用开发板作为UDP Server进行数据回环测试,本章我们让我们的开发板作为UDP Client进行数据回环测试。 连接方式 使开发板和我们的电脑处于同一网段: 开发板通过交叉线直连主机开发板和主机都接在路由器LAN口 测试工具 网路调试工具&a…

做线上虚拟展馆多少钱?如何通过线上虚拟展馆引流到线下?

引言: 在数字化时代的推动下,线上虚拟展馆正以全新的方式重新定义着展览体验。虚拟展馆是基于3D技术构建的数字空间,将传统的展览内容以数字化形式呈现,为参观者提供逼真的探索体验。这种前所未有的数字交互方式不仅为参观者带来…

没学C++,如何从C语言丝滑过度到python【python基础万字详解】

大家好,我是纪宁。 文章将从C语言出发,深入介绍python的基础知识,也包括很多python的新增知识点详解。 文章目录 1.python的输入输出,重新认识 hello world,重回那个激情燃烧的岁月1.1 输出函数print的规则1.2 输入函…

空洞卷积学习笔记

文章目录 1. 扩张卷积的提出2. 理解的难点 本片博客的主题思路来自于这篇文章——如何理解Dilated Convolutions(空洞卷积),但是作者似乎是很久之前写的,文字的排版很混乱,自己来写一个新的。 1. 扩张卷积的提出 Multi-Scale Context Aggre…

【Git】(二)分支

1、创建分支 已存在主分支master,现在需要创建v1.0的版本,一般直接在web页面操作。 v1.0分支,基线master,称为项目分支。 假如,v1.0项目存在两个项目成员sunriver2000和snow,一般还会再针对个人创建个人…

2023一建考点精编

1Z301030建设工程代理制度 1.代理是指代理人在被授予的代理权限范围内,以被代理人的名义与第三人实施法律行为,而行为后果由该被代理人承担的法律制度。代理涉及三方当事人,即被代理人、代理人和代理关系所涉及的第三人。 2.代理包括委托代…

接口测试工具——Postman测试工具 Swagger接口测试+SpringBoot整合 JMeter高并发测试工具

目录 Postman测试工具接口测试工具swaggerKnife4j1.引入依赖2.配置3.常用注解4.接口测试 JMeter什么是JMeter?JMeter安装配置1.官网下载2.下载后解压3.汉语设置 JMeter的使用方法1.新建线程组2.设置参数3.添加取样器4.设置参数:协议,ip,端口…

为什么说电子商务个性化是所有跨境电商需要关心的?

电子商务个性化就是个性化客户体验的行为,以便每个购物者都是独一无二的,比如您可以收到来自包含您的名字的品牌的电子邮件等,或者当您在线购物并查看基于您以前的浏览历史记录的商品推荐,这些就是购物个性化。如今很多企业都开始…

使用虚拟环境conda安装不同版本的cuda,cudnn,pytorch

背景:在学习深度学习时,我们不可避免的需要跑多个神经网络,而不同的神经网络环境都不一样,所以必须要使用到虚拟环境(如conda)去做环境隔离,安装属于自己的环境。在这环境中,大多神经网络都必须要用到cuda&…

【RocketMQ】安装

文章目录 下载RocketMQ配置环境变量 下载RocketMQ 下载RocketMQ安装包 下载DashBoard 这里版本推荐选择4.9.x,因为比较稳定。 下载完毕之后,将安装包拖入到Linux环境。 之后使用unzip命令解压缩RocketMQ的安装包。 unzip ./rocketmq-all-4.9.2-bin-rel…

Springboot 实践(6)spring security配置与运用

前文讲解了springboot项目添加静态资源目录,到目前为止,项目已经建立了后台服务控制、静态资源目录等服务;项目开发是为特定用户服务的,不具备访问权限用户,不允许访问系统,那么如何对系统资源进行保护呢&a…

操作系统-笔记-第二章-进程

目录 二、第二章——【进程】 1、进程的概念 (1)PID & PCD 进程控制块 (2)程序段 & 数据段 (3)特征 (特性) property (4)总结 2、进程的状态 …