Docker技术概论(1):Docker与虚拟化技术比较

Docker技术概论(1)
Docker与虚拟化技术比较

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136358470
HuaWei:https://bbs.huaweicloud.com/blogs/422803

【介绍】:本文将深入探讨Docker与传统虚拟机技术的区别,着重分析两者在抽象层级、隔离性、资源消耗、启动速度以及在实际应用中的优势和局限。通过对比分析,我们旨在为读者提供一个清晰的视角,以理解Docker技术如何在现代软件开发和运维中发挥其独特的价值。

在这里插入图片描述


下一节:《 Docker安装与配置


1. 概述

1.1 引言

在当今的软件开发和部署领域,虚拟化技术扮演着至关重要的角色。它不仅提高了硬件的利用率,还极大地简化了应用的部署和管理过程。虚拟化技术可以大致分为两类:硬件级别的虚拟化和系统层面的虚拟化。硬件级别的虚拟化主要通过虚拟机(VM)实现,而系统层面的虚拟化则主要通过容器技术实现,Docker是后者中最为人熟知的技术之一。

虚拟机技术通过模拟整个硬件系统,允许在单一的物理机上运行多个操作系统实例。这种方法为每个虚拟机提供了完全独立的运行环境,但也因此导致了较高的资源消耗和管理复杂度。相比之下,Docker等容器技术在操作系统级别提供虚拟化,允许应用程序和其依赖被打包在轻量级的容器中。这些容器共享宿主机的操作系统内核,但在用户空间中作为独立进程运行,从而实现了快速启动、低资源消耗和易于管理的特点。

1.2 关于本文

本文将深入探讨Docker与传统虚拟机技术的区别,着重分析两者在抽象层级、隔离性、资源消耗、启动速度以及在实际应用中的优势和局限。通过对比分析,我们旨在为读者提供一个清晰的视角,以理解Docker技术如何在现代软件开发和运维中发挥其独特的价值。

2. 虚拟机 => 硬件级别的虚拟化技术

虚拟机技术主要针对那些需要完全独立运行环境的应用场景。例如,在软件开发和测试中,开发者可以在不同的虚拟机中安装不同的操作系统和软件环境,以测试软件在不同环境下的兼容性和性能。在企业IT环境中,虚拟机技术可以用于服务器的虚拟化,提高硬件资源的利用率,简化数据中心的管理。

2.1 虚拟机技术概述

2.1.1 虚拟机技术简介

虚拟机Visual Machine)是物理硬件的抽象,可将一台服务器变成多台服务器。虚拟机管理程序允许多个虚拟机在一台机器上运行。每个虚拟机都包含操作系统、应用程序、必要的二进制文件和库的完整副本 - 占用数十 GB。虚拟机的启动速度也可能很慢。

虚拟机技术是一种基于硬件层面的虚拟化技术,它通过软件模拟出一台或多台完整的计算机系统,允许用户在单一的物理硬件上同时运行多个操作系统实例。这种技术的核心在于它提供了一个抽象层,这个抽象层位于物理硬件和操作系统之间,使得虚拟机内的操作系统以为自己在访问真实的物理硬件。。这种技术手段主要针对那些需要完全独立运行环境的应用场景。

2.1.2 虚拟机的抽象层级

虚拟机的实现依赖于虚拟机监视器(Virtual Machine Monitor, VMM)或称为 Hypervisor

Hypervisor直接运行在物理硬件上(Type 1,裸机Hypervisor)或在宿主操作系统之上(Type 2,宿主Hypervisor),负责创建虚拟机环境、模拟硬件资源,并确保虚拟机内运行的操作系统与应用程序无法直接访问物理硬件。

在这里插入图片描述

2.1.3 虚拟机组成

每个虚拟机都是一个完整的计算机系统的模拟,包括虚拟的CPU、内存、硬盘、网络接口等硬件资源。在这个虚拟环境中,可以安装操作系统和必要的应用程序,每个虚拟机都拥有自己独立的操作系统、应用程序、必要的二进制文件和库的完整副本。这种配置使得虚拟机可以像物理机一样执行各种计算任务,但其数据和状态完全独立于宿主机和其他虚拟机。

2.1.4 资源消耗与启动速度

由于每个虚拟机都需要模拟完整的硬件环境和运行一个完整的操作系统,因此它们通常会占用较多的计算资源,包括CPU时间、内存和存储空间。虚拟机镜像的大小通常在数十GB,这对物理资源的需求较高。此外,虚拟机的启动速度相对较慢,因为启动过程包括加载和初始化虚拟硬件环境以及启动操作系统,这可能需要几分钟的时间。

2.1.5 应用场景

虚拟机技术主要针对那些需要完全独立运行环境的应用场景。例如,在软件开发和测试中,开发者可以在不同的虚拟机中安装不同的操作系统和软件环境,以测试软件在不同环境下的兼容性和性能。在企业IT环境中,虚拟机技术可以用于服务器的虚拟化,提高硬件资源的利用率,简化数据中心的管理。

2.2 隔离性

隔离性不仅对于保证虚拟机的安全性和稳定性至关重要,也是实现资源有效管理和优化的基础。它允许在同一台物理服务器上安全地运行多个不同的操作系统和应用程序,极大地提高了硬件资源的利用率。此外,隔离性还为软件开发和测试提供了灵活性,开发者可以在隔离的环境中进行实验,而不必担心影响到生产环境。

2.2.1 Hypervisor的作用

如前面所介绍,Hypervisor,主要功能是管理和分配物理计算资源(如CPU、内存和存储)给虚拟机,并提供虚拟机之间的隔离。它允许虚拟机在一个宿主系统上共享物理硬件,同时保持彼此分隔,以避免干扰和冲突。

一个典型的虚拟机包括自己的操作系统、一系列的应用程序,以及所需的虚拟硬件资源,如CPU、内存和硬盘等。虚拟机间的隔离性是VMware的一个重要特点,每个虚拟机都运行在自己独立的操作系统上,彼此之间互不影响。

2.2.2 隔离性的实现

硬件级别的隔离:Hypervisor通过模拟硬件来为每个虚拟机创建一个完全独立的环境。虚拟机内的操作系统和应用程序认为它们正在访问真实的物理硬件,但实际上它们访问的是Hypervisor提供的虚拟硬件。
网络隔离:虚拟机之间的网络也是隔离的。Hypervisor可以为每个虚拟机配置独立的虚拟网络接口,甚至可以创建虚拟局域网(VLAN)来进一步增强隔离性和安全性。
存储隔离:虚拟机的存储也是独立的。虽然多个虚拟机可能共享同一物理存储设备,但Hypervisor会确保它们的存储空间不会相互干扰。每个虚拟机都有自己的虚拟硬盘,这就像是在物理硬盘上划分了独立的分区。

2.3 虚拟机的一些不足

虽然虚拟机技术为软件开发、测试和部署提供了极大的灵活性和隔离性,但它也存在一些明显的不足之处,主要包括 资源消耗大启动和运行速度慢,以及管理复杂度高等方面。

2.3.1 资源消耗大

每个虚拟机都需要模拟一个完整的硬件环境,并在其上运行一个完整的操作系统实例,以及所需的应用程序和服务。这意味着,即使是最简单的虚拟机也需要为其分配足够的CPU资源、内存和存储空间。在物理主机上运行多个虚拟机时,这些资源的需求会迅速累加,导致硬件资源的利用率迅速饱和。

相比之下,容器技术如 Docker 仅需在宿主操作系统上额外运行应用程序和其依赖,而不需要为每个容器分配和模拟完整的操作系统资源,从而大幅降低了资源消耗。

2.3.2 启动和运行速度慢

由于虚拟机需要加载和运行整个操作系统,其启动时间相对较长,特别是当虚拟机镜像较大或物理资源有限时,这一问题更为明显。此外,虚拟机在运行时也可能因为资源分配和调度的开销而表现出较慢的响应速度。

相比之下,Docker 容器由于共享宿主机的操作系统内核,可以在几秒钟内启动,且运行效率更高。

2.3.3 管理复杂度高

管理虚拟机涉及到对虚拟硬件环境、操作系统实例以及上面运行的应用程序和服务的管理。当虚拟机数量增多时,这些管理任务会变得尤为复杂。每个虚拟机可能需要 单独的安全补丁、操作系统更新、配置更改和监控。

此外,虚拟机之间可能存在依赖关系,这些依赖关系的管理也增加了系统管理员的负担。

而使用 Docker 等容器技术,可以通过 容器编排工具(如Kubernetes)来简化这些管理任务,提高了运维效率。

3 Docker => 系统层面的虚拟化技术

3.1 Docker的抽象层级

Docker容器化技术则采用了一种不同的方法。它在操作系统级别提供虚拟化,通过在宿主机的操作系统内核上直接运行容器实现。这种方式使得Docker容器更加轻量级,并且启动速度更快。

与传统的硬件级别虚拟化相比,操作系统级别的虚拟化具有以下特点和优势:

  1. 资源占用小:容器不需要运行完整的操作系统,因此它们消耗的资源远少于传统虚拟机。
  2. 快速启动和部署:由于不需要启动完整的操作系统,容器可以在几秒钟内启动和部署。

3.2 隔离性

Docker容器虽然共享宿主机的内核,但在操作系统层面实现了良好的隔离,这将在后面继续介绍。

3.3 容器化应用

Docker 本身将容器解释为“软件的标准单元”,**容器 **是应用程序层的抽象,它将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。容器比虚拟机占用更少的空间(容器镜像的大小通常为数十MB),可以处理更多的应用程序,并且需要更少的虚拟机和操作系统。

在这里插入图片描述

在实际应用中,Docker技术在简化和加速开发流程方面发挥了重要作用。对于系统管理员而言,配置一个能够持续提供一致体验的工作环境,在面对多个不同的操作系统、不同版本的操作系统及各种库和编程语言时,一直是一个巨大的挑战。Docker通过减少活动部件的数量,有效解决了这一问题。现在,管理员只需要关注Docker引擎和运行时的一致性,而不是繁杂的操作系统和程序版本。

在生产环境中,Docker同样展现出了其优势。例如,考虑一个需要从Python 2.7升级到Python 3.5的Web应用程序。传统方法可能涉及复杂的操作系统升级或第三方依赖项的安装,而使用Docker,我们只需构建一个包含新应用程序代码和依赖项的新容器。如果新版本有问题,简单地回滚到旧容器即可。这种方式显著降低了故障恢复时间,同时也减少了由于系统和应用程序的变更导致的不确定性。

4. 结论

本文深入探讨了 Docker 与传统虚拟机技术的区别,通过对比分析它们在抽象层级、隔离性、资源消耗、启动速度以及应用场景等方面的不同,揭示了 Docker 在现代软件开发和运维中的独特价值和优势。

虚拟机技术,作为一种硬件级别的虚拟化手段,通过模拟整个硬件系统来提供完全独立的运行环境,适用于需要高度隔离和完整操作系统支持的场景。然而,这种技术的资源消耗大、启动和运行速度慢、管理复杂度高等特点,使其在某些应用场景下显得不那么高效。

相比之下,Docker 作为一种系统层面的虚拟化技术,通过在宿主机的操作系统内核上直接运行容器,实现了轻量级的虚拟化。这种方法不仅资源占用小、启动速度快,而且简化了应用的部署和管理过程,为软件的持续开发和快速迭代提供了强大的支持。Docker 的隔离性虽然不及传统虚拟机,但对于大多数开发和生产环境已经足够。

总的来说,Docker与虚拟机技术各有优势和适用场景。在选择适合的技术时,开发者和系统管理员应根据具体需求、资源限制和安全要求来做出决策。随着容器技术的不断成熟和发展,Docker及其生态系统将继续在云计算、微服务架构、持续集成/持续部署(CI/CD)等领域发挥重要作用,推动软件开发和运维的现代化进程。

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

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

相关文章

ABAP 发送带EXCEL邮件

前言 没啥特殊需求,就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式,每列之间用TAB制表符分隔,每行之间用回车符分隔 思路也比较明确,在SAP中实现这种格式&#xf…

.Net利用Microsoft.Extensions.DependencyInjection配置依赖注入

一、概述 为了让接口程序更加模块化和可测试,采用依赖注入的方式调用接口方法。 二、安装Microsoft.Extensions.DependencyInjection 在NuGet里面搜索Microsoft.Extensions.DependencyInjection,并进行安装。 三、代码编写 3.1 创建Service 实现类 /*****************…

Doccano 修复 spacy.gold 的bug

引言 最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式; 摘要 可先阅读一下教程:【已解决】关于如何将Doccano标注的文本转换成NER模型可以直接处理的CoNLL 2003格式 装包:pip install doccano-transformer 报错信息 运行…

【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面,通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面,使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

记录 关于navicat连接数据库报错1045的问题

重装数据库之后就连接不上了 报错1045 而网上的解决方案大都是更改数据库密码,但是我在第一步就被卡住无法更改密码,输入指令也报错,检查的环境变量也没错,经过长时间的试错终于找到解决了办法 解决办法 删除data文件夹 如果无法…

Python:练习:输出int值a占b的百分之几。例如:输入1和4,输出:25%。

案例: 输出int值a占b的百分之几。例如:输入1和4,输出:25%。 思考: 所有的一步步思考,最后综合起来。 首先,确定 输出,那么就用input,而且是int值,所以肯定…

C++设计模式_创建型模式_工厂方法模式

目录 C设计模式_创建型模式_工厂方法模式 一、简单工厂模式 1.1 简单工厂模式引入 1.2 简单工厂模式 1.3 简单工厂模式利弊分析 1.4 简单工厂模式的UML图 二、工厂方法模式 2.1 工厂模式和简单工厂模式比较 2.2 工厂模式代码实现 2.3 工厂模式UML 三、抽象工厂模式 3.1 战斗场景…

MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸

编辑:ll MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸 型号:MDS300-16 品牌:ASEMI 封装:M25 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):300A 功率(Pd):大功率 芯片…

Flink——芒果TV的实时数仓建设实践

目录 一、芒果TV实时数仓建设历程 1.1 阶段一:Storm/Flink JavaSpark SQL 1.2 阶段二:Flink SQLSpark SQL 1.3 阶段三:Flink SQLStarRocks 二、自研Flink实时计算调度平台介绍 2.1 现有痛点 2.2 平台架构设计 三、Flink SQL实时数仓分…

面试笔记系列三之spring基础知识点整理及常见面试题

目录 如何实现一个IOC容器? 说说你对Spring 的理解? 你觉得Spring的核心是什么? 说一下使用spring的优势? Spring是如何简化开发的? IOC 运行时序 prepareRefresh() 初始化上下文环境 obtainFreshBeanFactory() 创建并…

Linux系统加固:如何有效管理系统账号

Linux系统加固:如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 💖The Begin💖点点关注,收藏不迷路💖 在Linux系统中…

为什么软考报名人数越来越多?

2020年软考报名人数404666人,广东省报考人数超过14万人。 ●2021年软考通信考试报名人数突破100万人,估计软考有90多万。 ●2022年软考通信考试共129万人,估计软考占了120多万人。 ●2023年软考具体报名人数没有公布,但工业和信…

【AI+应用】aliyun的EMO图生视频模型引起的思考如何做AI数字人

昨天2 月 29 日消息,2 月 28 日,阿里巴巴集团智能计算研究院日前上线了一款新的 AI 图片 - 音频 - 视频模型技术 EMO,官方称其为 " 一种富有表现力的音频驱动的肖像视频生成框架 "。据悉,用户只需要提供一张照片和一段任…

springboot235基于SpringBoot的房屋交易平台的设计与实现

房屋交易平台设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互…

死记硬背spring bean 的生命周期

1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象,在这个对象没有任何引用的时候,会被gc给回收掉。而对于spring而言,它本身存在一个Ioc容器,就是用来管理对象的,而对象的生命周期也完全由这个容…

性能测试-反编译jar

方法一,使用jd-gui 1、官网下载:Java Decompiler 2、下载mac版本后,解压,如下所示: 双击 JD_GUI,提示错误,如下所示: 已经安装了java 17,是java 1.8以上版本&#xff0…

Unity中URP下实现水体(水面高光)

文章目录 前言一、实现高光反射原理1、原理:2、公式: 二、实现1、定义 _SpecularColor 作为高光反射的颜色2、定义 _SpecularIntensity 作为反射系数,控制高光反射的强度3、定义 _Smoothness 作为高光指数,用于模型高光范围4、模拟…

深入理解c指针(四)

目录 六、assert断言 七、指针的使用和传址调用 1、strlen的模拟实现 2、传值调用和传址调用 3、练习-字符串逆序 在深入理解c指针&#xff08;三&#xff09;提到&#xff0c;在实际使用指针前可以检测其是否指到有效空间&#xff1a; #include<stdio.h> int mai…

度量与评估客户体验:以客户为中心的方法和工具

在当今的市场环境中&#xff0c;客户体验已经成为企业成功的关键因素。一个优秀的客户体验不仅能够提升客户满意度&#xff0c;增强客户忠诚度&#xff0c;还能够吸引新的潜在客户。然而&#xff0c;要实现这一目标&#xff0c;企业首先需要了解如何度量和评估客户体验。本文将…

day08_分类品牌管理商品规格管理商品管理

文章目录 1 分类品牌管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 品牌列表加载1.4.1 后端接口BrandControllerBrandServiceBrandMapperBrandMapper.xml 1.4.2 前端对接brand.jscategoryBrand.vue 1.5 分类数据加载1.6 列表查询1.6.1 需求说明1.6.2 后端接口需求分析Categor…