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.rhkb.cn/news/266405.html

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

相关文章

雾锁王国服务器官方配置要求说明

雾锁王国/Enshrouded服务器CPU内存配置如何选择?阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置,支持4人玩家畅玩,自带10M公网带宽,1个月90元,3个月271元,幻兽帕鲁服务器申请页面 https://t.aliyun.com…

5 局域网基础(3)

1.AAA 服务器 AAA 是验证、授权和记账(Authentication、Authorization、Accounting)3个英文单词的简称,是一个能够处理用户访问请求的服务器程序,提供验证授权以及帐户服务,主要目的是管理用户访问网络服务器,对具有访问权的用户提供服务。AAA服务器通常…

MySQL(基础篇)——事务

一.事务简介 事务是一组操作的集合,他是一个不可分割的单位,事务会把所有的操作作色一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 默认MySQL的事务是自动提交的,也就是说&#xff0c…

基于Vue3的在线考试系统

TDuckX 是一个功能强大的可私有化部署的在线表单考试平台,可以帮助您轻松创建表单和在线考试。本文档将指导您如何使用 TDuckX 创建您自己的在线考试。 步骤 1:登录账户 完成系统部署后,在浏览器中打开 TDuckX 的网站。 如果您已经拥有账户&…

STM32自学☞AD单通道

程序的最终运行成果: 当转动电位器时,数值和电压值发生变化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步骤:…

Mybatis-Plus介绍

目录 一、Mybatis-Plus简介 1.1、介绍 1.2、特性 1.3、架构 1.4、Mybatis-Plus与Mybatis的区别 二、快速入门 2.1、首先创建数据库mybatis-plus 2.2、创建user表 2.3、插入数据 2.4、创建Spring-Boot项目 2.5、添加依赖 2.6、连接数据库 一、Mybatis-Plus简介 1.1、…

CPU算力分配【华为OD机试-JAVAPythonC++JS】

题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换…

银河麒麟server-V10配置yum镜像源

1.跳转到yum.repo.d文件夹 cd /etc/yum.repo.d 2.重命名系统镜像源文件 mv kylin_x86_64.repo kylin_x86_64.repo.bak 3.添加新的镜像源 vi kylin.repo [ks10-adv-cdrom] name Kylin Linux Advanced Server 10 - cdrom baseurl file:///run/media/root/Kylin-Server-10…

【STM32】STM32学习笔记-独立看门狗和窗口看门狗(47)

00. 目录 文章目录 00. 目录01. WDG概述02. 独立看门狗相关API2.1 IWDG_WriteAccessCmd2.2 IWDG_SetPrescaler2.3 IWDG_SetReload2.4 IWDG_ReloadCounter2.5 IWDG_Enable2.6 IWDG_GetFlagStatus2.7 RCC_GetFlagStatus 03. 独立看门狗接线图04. 独立看门狗程序示例105. 独立看门…

VUE实现Office文档在线编辑,支持doc/docx、xls/xlsx、ppt/pptx、pdf等

1.微软提供的在线Office预览(只能预览,不能编辑) https://view.officeapps.live.com/op/view.aspx?src服务器上文档地址(http开头) 2.国内在线Office方案: 腾讯文档、石墨文档、飞书 优势:跨…

NVIDIA\CUDA\cudnn安装以及visual studio2022编译安装ceres2.2.0库

一、NVIDIA驱动安装 网址:官方驱动 | NVIDIA 因为本文之后需要visual studio2022进行编译,所以在安装NVIDIA\CUDA\cudnn之前你先得安装visual studio2022 点击NVIDIA控制面板,NVIDIA Control Panel 查看产品家族 根据产品家族选择驱动,点…

​LeetCode解法汇总2476. 二叉搜索树最近节点查询

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCode,lintCode等网站题目的解法和代码,以及完整的mode类&#…

Mac 制作可引导安装器

Mac 使用U盘或移动固态硬盘制作可引导安装器(以 Monterey 为例) 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分,称为分区。分区也称为容器,不同容器…

仓储自动化新解:托盘四向穿梭车驶入智能工厂 智能仓储与产线紧密结合

目前,由于对仓库存储量的要求越来越高,拣选、输送以及出入库频率等要求也越来越高,对此,在物流仓储领域,自动化与智能化控制技术得以快速发展,货架穿梭车在自动库领域的应用越来越广泛。现阶段,…

Windows Docker 部署 SQL Server

部署 SQL Server 打开 Docker Desktop,切换到 Linux 内核。然后在 PowerShell 执行下面命令,即可启动一个 SQL Server 服务,这里安装的是 2022 年版本 docker run -e "ACCEPT_EULAY" -e "MSSQL_SA_PASSWORDSQL123abcABC!&qu…

Sora 原理与技术实战笔记一

b 站视频合集 【AIX组队学习】Sora原理与技术实战:Sora技术路径详解 Sora 技术报告(OpenAI) huggingsd 文生图视频系列的一个开源项目 最强视频生成模型Sora相关技术解析 https://github.com/lichao-sun/SoraReview 惊艳效果: 长…

Cocos游戏开发中的金币落袋效果

引言 Cocos游戏开发中的金币落袋效果 大家好,不知道大家有没有被游戏中的一些小细节打动或吸引。 往往游戏就是通过一些与众不同的细节,去留住玩家。 金币落袋效果正是如此,它比普通的数值变化来得更加形象,给予玩家成就感和满足感。 本文重点给大家介绍一下如何在Coc…

xss高级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

Unity(第二十三部)导航

你可以使用 unity官方提供的 unity导航组件或第三方 unity导航组件&#xff0c;以实现游戏中角色或其他物体的导航。 unity导航组件通常具有多种导航模式&#xff0c;如飞行模式、步行模式、车辆模式等&#xff0c;可以根据不同的需求选择合适的模式。同时&#xff0c;unity导…

Qt项目:网络1

文章目录 项目&#xff1a;网路项目1&#xff1a;主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2&#xff1a;基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目&#xff1a;网路 项目1&#xff1a;主机信息查询 使用QHostI…