容器技术的发展

news2024/10/7 6:41:42

容器技术的发展

近年来,随着计算机硬件、网络以及云计算等技术的迅速发展,云原生的概念也越来越受到业界人士的广泛关注,越来越多的应用场景开始拥抱云原生,其中容器技术的发展起着至关重要的作用。本章将介绍容器技术的基础知识,为后续章节的学习做好基础铺垫。

本章主要涉及到的知识点有:

  1. 什么是容器:了解容器技术与虚拟技术的区别。
  2. 为什么需要容器:介绍容器技术解决的问题。
  3. 容器技术的发展历程:了解容器技术的发展历史。
  4. 容器是如何工作的:了解容器技术的工作原理。

1.1  什么是容器

容器作为一种先进的虚拟化技术,已然成为了云原生时代软件开发和运维的标准基础设施。在了解容器技术之前,我们先来了解一下虚拟化技术。

什么是虚拟化技术?

计算机历史上首个虚拟化技术实现于1961年,IBM709计算机首次将CPU占用切分为多个极短(1/100sec)的时间片,每一个时间片都用来执行不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU,并且让每一颗虚拟CPU看起来都是在同时运行的。这就是虚拟机的雏形。

计算机系统对于大部分软件开发者来说可以分为以下层级结构,如图1-1所示,自底向上分为硬件层、操作系统层、函数库层、应用程序层,每一层都向上层提供接口,同时每一层也只需要知道下一层的接口即可调用底层功能来实现上层操作,而不需要详细了解下一层的具体运作机制。

 

图1-1  计算机层级结构示意

简单地说,所谓虚拟化是将计算机的各种硬件资源,例如CPU、内存、磁盘以及网络等,都看作是一种资源池,系统管理员可以将这些资源池进行重新分配,提供给其他的虚拟计算机使用。对于管理员来说,底层物理硬件完全是透明的,即完全不用考虑不同的物理架构,在需要各种硬件资源的时候,只要从这个资源池中划出一部分即可。

虚拟化是使用逻辑来表示资源,从而摆脱物理限制的约束,提高物理资源的利用率。虚拟化就是在上下两层之间,创造出一个新的抽象层,使得上层软件可以直接运行在新的虚拟环境上。简单来说,虚拟化就是通过模访下层原有的功能模块创造接口,来服务于上层,从而达到跨平台开发的目的。如图1-2所示,虚拟机可以理解为存在于硬件层和操作系统层间的虚拟化技术(硬件抽象层),JVM是存在于函数库层和应用程序之间的虚拟化技术。

 

图1-2  计算机层级间的抽象

从上面的描述可以得知,虚拟化技术至少给计算机行业带来两个巨大的改变,其一就是解决了当前高性能的计算机硬件的产能过剩的问题,其二是可以把老旧的计算机硬件重新组合起来,作为一个整体的资源来重新使用。

此前,市场上面主流的虚拟化产品有Linux平台上面的KVM、Xen、VMWare以及VirualBox等,运行在Windows平台上面的虚拟化产品主要有Hyper V、VMWare以及VirtualBox等。对于这些产品来说,其支持的宿主操作系统是非常广泛的,可以包括Linux、OpenBSD、FreeBSD以及各种Windows等。

在传统的虚拟化技术中,虚拟化系统会虚拟出一套完整的硬件基础设施,包括CPU、内存、显卡、磁盘以及主板等。因此,所有的虚拟机之间是相互隔离的,每个虚拟机都不会受到其他虚拟机的影响,如同多台物理计算机一样。

尽管传统的虚拟化技术通过虚拟出一套完整的计算机硬件,实现了各个虚拟机之间的完全隔离,从而给用户带来了极大的灵活性,并降低了硬件成本。但是,越来越多的用户发现,这种技术方案实际上同时也给自己制造了许多麻烦。例如,在这种环境中,每个虚拟机实例都需要运行客户端操作系统的完整副本以及其中包含的大量应用程序。从实际运行的角度来说,由此产生的沉重负载将会影响其工作效率及性能表现。

容器技术的出现,为虚拟化技术带来了新的生机和革命性的变化。它既拥有虚拟化技术的灵活性,又避免了传统的虚拟化技术的上述缺点。

所谓容器,是一种轻量级的操作系统级虚拟化,可以让用户在一个资源隔离的进程中运行应用及其依赖项。运行应用程序所必需的组件都将打包成一个镜像并可以复用。执行镜像时,它运行在一个隔离环境中,并且不会共享宿主机的内存、CPU以及磁盘,这就保证了容器内进程不能监控容器外的任何进程。图1-3显示了容器的基本架构。

 

图1-3  容器架构

容器的功能其实和虚拟机类似,无论容器还是虚拟机,其实都是在计算机不同的层面进行虚拟化,即使用逻辑来表示资源,从而摆脱物理限制的约束,提高物理资源的利用率。容器技术已经引起了业内的广泛关注。通过应用容器技术,可以大大地提升应用开发、测试和部署的工作效率。

1.2  为什么需要容器

虚拟化技术已经成为一种被大家广泛认可的服务器硬件资源共享方式。实际上,与传统的虚拟机相比,容器有着明显的区别。

虚拟机管理系统通常需要为虚拟机虚拟出一套完整的硬件环境,此外,在虚拟机中,通常包含整个操作系统及其应用程序。从这些特点来看,虚拟机与真实的物理计算机非常相似。因为虚拟机包含完整的操作系统,所以虚拟机所占磁盘容量一般都比较大,一般为几个GB。如果安装的软件比较多,则可以占用几十,甚至上百GB的磁盘空间。虚拟机的启动相对也比较慢,一般为数分钟。

 

图1-4  虚拟机

容器作为一种轻量级的虚拟化方案,其所占磁盘空间一般为几个MB字节。在性能方面,与虚拟机相比,容器表现得更加出色,并且其启动速度非常快,一般为几秒。

图1-5  容器

 

图1-4和图1-5显示了虚拟机和容器之间的区别。从图1-4可以看出,客户机和宿主机之间有个虚拟机管理器来管理虚拟机。每个虚拟机都有操作系统,应用程序运行在客户机操作系统中。从图1-5可以看出,宿主机和容器之间为容器引擎,容器并不包含操作系统,应用程序运行在容器中。

容器的产生为虚拟化技术带来革命性的变化。然而,许多人并不理解,容器的出现到底解决了什么问题?

在虚拟化系统中,大多数问题都是在应用系统的运行环境改变时才突显出来。例如,开发者在Windows操作系统里面编写应用代码,但是实际生产环境却是Linux系统。在这种情况下,应用系统的某些功能就极有可能出现问题。也就是说,当配套软件环境不一样的时候,应用系统出现故障的几率就会大大增加。

Docker创始人Solomon Hykes曾经说过,“如果测试环境使用Python 2.7,但是生产环境使用Python 3,那么一些奇怪的使用就会发生。或者你依赖某个特定版本的SSL库,但是却安装了另外一个版本。或者在Debian上面运行测试环境,但是生产环境使用Red Hat,那么任何奇怪的事情都可能发生。”

除了运行环境之外,发生改变的还有可能是网络或者其他方面。例如,测试环境和生产环境的网络拓扑可能不同,安全策略和存储也有可能不同。用户开发的应用系统需要在这些基础设施上面运行。

当用户将应用系统部署在容器中之后,它们的迁移变得非常容易。容器的初衷也就是将各种应用程序和它们所依赖的运行环境打包成标准的镜像文件,进而发布到不同的平台上运行。这一点与现实生活中货物的运行非常相似。为了解决各种型号、规格、尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱。把货物放进集装箱之后,物流公司只负责集装箱的运输就可以了,而不用再去关心集装箱里面的货物到底该如何包装、以及提供多大规格的包装箱。他们面对的就是一个个简单的集装箱。而应用容器之后,部署人员面对的不再是具体的应用系统,不用再关心如何为应用系统准备运行环境及其依赖的其他组件,他们面对的就是一个个镜像,只要把镜像部署好就可以了。

从上面的描述可以得知,容器主要的特性之一就是进程隔离,容器非常适合于在当前的云环境快速迁移和部署应用系统。

----------------------------------------------------

本文节选自《Docker快速入门》

本次内容发布,获得作者和出版社授权,供读者个人非商业目的使用。

 

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

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

相关文章

瘦身必备!四款低卡美食狂掉20斤肥肉

夏天来了,想要减肥瘦身,却总是被高卡路里的食物所困扰?别担心,今天我为大家介绍四款低卡掉秤减脂美食,让你轻松享受美食的同时还能达到减肥的目的。 这四款美食简单易做,口感也十分好吃,适合各…

《花雕学AI》ChatGPT 的 Prompt 用法,不是随便写就行的,这 13 种才是最有效的

ChatGPT 是一款基于 GPT-3 模型的人工智能写作工具,它可以根据用户的输入和要求,生成各种类型和风格的文本内容,比如文章、故事、诗歌、对话、摘要等。ChatGPT 的强大之处在于它可以灵活地适应不同的写作场景和目的,只要用户给出合…

【STM32】定时器PWM模式详解

PWM模式: PWM模式1,向上计数时,PWM信号从有效电平变为无效电平 PWM模式2,向上计数时,PWM信号从无效电平变为有效电平 PWM极性: 极性为高时,高电平为有效电平,低电平为无效电平 极性…

【Android取证篇】Android设备USB调试打开方式(开发者模式)

【Android取证篇】Android设备USB调试打开方式(开发者模式) Android各个版本系统手机开启”USB调试”的入口不全相同,仅供参考—【蘇小沐】 1、【Android1.0-3.2】 路径:在应用列表选择「设置」->「应用程序」->「开发」->勾选「USB调试」选…

拿来吧你——一个类帮你搞定SpringBoot中的请求日志打印

拿来吧你——一个类帮你搞定SpringBoot中的请求日志打印 日常开发工作中避免不了要打印请求日志,这个功能几乎在所有的项目中都需要编写一次,重复的次数多了,难免会感觉繁琐,因此打算搞一个通用类把这块功能拆出来。 废话不多说—…

虹科方案|使用 HK-TRUENAS支持媒体和娱乐工作流程-1

一、摘要 开发和交付能够随时随地触及受众的媒体内容变得越来越重要和复杂。 在当今高度互联、娱乐驱动的世界中,媒体和娱乐 (M&E) 公司需要保持竞争力才能取得成功。 这些组织需要制作各种不同格式的信息和娱乐内容,以便在移动设备、台式机、工作站…

MySQL---基本操作DDL(SQL特点,数据类型,对数据库的操作,对表的操作)

1. SQL的特点 具有综合统一性,不同数据库的支持的SQL稍有不同 非过程化语言 语言简捷,用户容易接受 以一种语法结构提供两种使用方式 2. 对数据库的常用操作 功能 SQL 查看所有的数据库 show databases; 创建数据库 create databa…

设备驱动模型:总线-设备-驱动

1 设备驱动模型简介 参考 以下内容: Linux 笔记: https://xuesong.blog.csdn.net/article/details/109522945?spm1001.2014.3001.5502正点原子-左盟主 驱动开发网络资料:https://www.cnblogs.com/lizhuming/category/1859545.html 1.1 概…

Github的加速访问

文章目录 概述Steam的下载Steam的安装使用 概述 GitHub打开访问速度比较慢,这儿介绍一种加速访问的方式,是正规的方式,采用 Steam 来加速。 Steam的下载 浏览器输入框输入Watt Toolkit进行搜索, 选择官网进入,网址 …

蚂蚁安全科技 Nydus 与 Dragonfly 镜像加速实践 | 龙蜥技术

编者按:本文详细介绍蚂蚁安全科技使用龙蜥社区技术进行镜像加速的实践过程,可以让您了解如何基于龙蜥社区推出的容器镜像,Nydus 与 Dragonfly 镜像加速技术和 LifseaOS 为容器的启动加速。文章转自金融级分布式架构,以下为全文。 …

计算材料学有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是一些计算材料学领域的SCI期刊推荐: Computational Materials Science: 该期刊发表计算材料科学的理论、计算和实验研究,包括材料结构、热力学、物理和化学性质以及材料的设计、制备和性能等方面的内容。 Materials Horizons&#xff1…

JavaWeb——HTML中的常用标签详解

目录 一、HTML 1、HTML标签结构 2、HTML文件结构 (1)、定义 (2)、标签层次结构 二、HTML常见标签 1、注释标签 2、标题标签 3、段落标签 4、换行标签 5、格式化标签 6、图片标签 (1)、定义 &a…

4。计算机组成原理(3)指令系统

嵌入式软件开发,非科班专业必须掌握的基本计算机知识 核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 指令系统(Instruction Set)是计算机体系结构的关键组成部分之一,它定义了处…

Java面试题复习(1)

目录 1.mysql使用innodb引擎,请简述mysql索引的最左前缀,如何优化order by语句 2.在JVM内存模型中,为什么要区分新生去和老年代,对于新生代为什么要区分eden区和survial区? 3.常见的远程调用有几种 4.对于外部衔接的…

ChatGPT总是答非所问?如何使用chatgpt定义角色

一、📝 定义角色:ChatGPT 的角色设定 背景信息:提供详细、准确的背景信息和前提条件,以便 ChatGPT 提供有针对性的回答和建议 任务目标:清晰地描述希望 ChatGPT 完成的任务 输出要求:告知 ChatGPT 如何完…

chatgpt应用市场

简介:利用ChatGPT的模型能力可以开发出垂直领域的应用市场。例如,可以使用ChatGPT来构建一个智能医疗助手,该助手可以回答患者关于疾病、症状、治疗方案等方面的问题。另外,也可以使用ChatGPT来构建一个智能金融助手,该助手可以回答用户关于投资、理财、贷款等方面的问题。…

MySQL的两个原则,两个优化,一个bug

背景:因为间隙锁在可重复读隔离级别下才有效,所以本篇文章接下来的描述,若没有特殊说明,默认 是可重复读隔离级别。 1.加锁规则里面,包含了两个“原则”、两个“优化”和一个“bug”。 (1). 原则1:加锁的基本单位是n…

家用洗地机有什么推荐的吗?家用洗地机分享

洗地机是解决清洁问题的智能设备。多年的市场验证已证明,它比传统清洁方法更加经济、高效和环保。相比传统方式,洗地机可以以更小的成本清洁更大的空间。同时,它的清洁效果也更好,采用先进的技术和设备,包括高压喷洒、…

第二十一章 备忘录模式

文章目录 前言一、备忘录模式基本介绍二、备忘录模式原理代码实现备忘录对象 Memento发起者 Originator管理备忘录类 CaretakerClint 测试类 三、游戏角色恢复状态实例备忘录对象游戏角色管理备忘录对象测试 Clint 四、备忘录模式的注意事项和细节 前言 一、备忘录模式基本介绍…

顺序表(二)

文章目录 前言一.什么是链表二.线性表的链表结构2.1链表的初始2.2 链表的分类2.3 单链表2.4 双链表 三.java里面的LinkedList API3.1 基础操作3.2 链表的遍历操作 四.模拟实现LinkedList的相关操作创建一个链表头插法尾插法任意位置插入,第一个数据节点为0号下标查找是否包含关…