Docker:容器化和虚拟化

米饭3天前行业资讯19

虚拟化

虚拟化是一种资源管理技术,它将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理配置所限制的。

在这里插入图片描述

像我们常听的虚拟机,就是“伪造”一个硬件抽象接口,将一个操作系统及其资源嫁接到硬件上,实现和真实物理机一样的功能。

123

特点

硬件抽象:虚拟化技术通过在物理硬件和操作系统之间添加一层抽象层,使得多个虚拟机可以在同一台物理服务器上运行。

强隔离性:每个虚拟机都运行一个完整的操作系统(包括其自己的内核),并且相互独立。这种强隔离性使得虚拟机在安全性方面具有优势。

资源分配灵活:虚拟化技术可以根据需要动态地分配和释放资源,从而提高了资源的利用率和灵活性。

为什么要进行虚拟化?

硬件抽象和隔离:虚拟化技术通过在物理硬件和操作系统之间添加一层抽象层,实现了硬件资源的抽象和隔离。这使得多个虚拟机可以在同一台物理机上运行,每个虚拟机都有自己的操作系统和应用程序,相互独立。

资源优化和灵活性:虚拟化技术允许根据需求动态地分配和释放资源,从而提高了资源的利用率和灵活性。这有助于应对不断变化的工作负载需求,并优化成本效益。

高可用性:虚拟化技术提供了高可用性解决方案,如虚拟机迁移和故障切换。这确保了应用程序在硬件故障或维护期间能够持续运行,提高了系统的可靠性和稳定性。

简化管理:虚拟化技术简化了基础设施的管理。通过使用虚拟化管理工具,可以轻松地监控、配置和管理虚拟机,降低了管理成本并提高了效率。

容器化

容器化是一种软件开发和部署的技术方法,它允许开发者将应用程序及其所有依赖项(如库、框架、运行时环境、环境变量和配置文件等)打包到一个轻量级、可移植的独立容器中。这些容器包含了运行应用程序所需的一切,从而确保应用程序在不同的环境中能够一致地运行。

在这里插入图片描述

容器通过“伪造”操作系统的接口,将函数库层以上的功能置于操作系统上。
Docker,就是基于Linux操作系统的Namespace和cgroup功能实现的隔离容器,可用模拟操作系统的功能。

在这里插入图片描述

特点

轻量级:容器只包含应用程序及其依赖项,而不包括整个操作系统,因此资源使用更加高效。

快速部署:由于容器化技术减少了部署过程中的复杂性和开销,因此应用程序可以更快地部署到生产环境中。

高可移植性:容器化技术使得应用程序能够轻松地在不同的环境和平台之间移动,从而提高了应用程序的灵活性和可扩展性。

为什么要进行容器化?

一致性:确保在不同环境中的一致性。通过将应用程序及其所有依赖项打包到一个容器中,可以确保应用程序在任何地方都能以相同的方式运行,无论底层基础设施如何。

高效性:容器化技术减少了资源的浪费,因为容器只占用必要的资源,并且可以在同一台物理机上运行多个容器。这提高了资源的利用率,并降低了成本。

快速部署和扩展:容器化使得应用程序的部署和扩展变得更加快速和简单。通过使用容器编排工具(如Kubernetes),可以轻松地管理大量容器的生命周期,包括部署、升级和回滚。

安全性:容器提供了应用程序之间的隔离,减少了应用程序之间的相互影响。这有助于增强系统的安全性,并防止一个应用程序的问题影响到其他应用程序。

主机虚拟化的实现

主机虚拟化通过模拟或抽象物理硬件资源,如CPU、内存、存储和网络等,来创建多个虚拟的计算机环境。这些虚拟环境在逻辑上是相互隔离的,但它们可以共享物理主机的硬件资源。


主机虚拟化的原理是通过在物理服务器上安装一个虚拟化层来实现。这个虚拟化层可以在物理服务器和客户操作系统之间建立虚拟机,使得它们可以独立运行。

5f242903ad224a0b807e81fae8eab6f4.png

通过硬件资源来实现主机虚拟化。
利用处理器、内存和其他硬件技术来提高虚拟化性能和安全性。
硬件辅助虚拟化技术通常与全虚拟化技术结合使用,以提高虚拟化的效率和安全性。


1a38a821317b4410b5a92b2719bf8bf3.png

这种是通过宿主机上的软件程序来实现对资源的隔离。
允许在宿主机上运行多个完全独立的虚拟机,每个虚拟机都具有自己的操作系统和应用程序。
需要在宿主机上模拟硬件、操作系统和设备,以使虚拟机能够与宿主机隔离运行。

容器虚拟化的实现

容器虚拟化通过操作系统级别的隔离和资源控制来实现多个应用程序的并行运行。它利用Linux内核的Namespace和Cgroups功能,为每个容器提供独立的运行环境,同时限制容器的资源使用。


Namespace:Namespace是Linux内核用来隔离系统资源的方式。通过Namespace,可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源。这样,不同的进程之间就实现了隔离。容器虚拟化利用Namespace来隔离PID(进程ID)、IPC(进程间通信)、network(网络)、mount(挂载点)等系统资源。

Cgroups:Cgroups(Control Groups)是Linux内核提供的一种机制,用于限制、记录和隔离进程组所使用的物理资源(如CPU、内存、磁盘I/O等)。容器虚拟化利用Cgroups来控制容器的资源使用,确保容器不会占用过多的系统资源。

注:部分图片来自于网络:CNBPA ,极海 ,太平洋电脑网

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ



相关文章

Docker:技术架构的演进之路

Docker:技术架构的演进之路

前言技术架构是指在软件开发和系统构建中,为了满足业务需求和技术要求,对系统的整体结构、组件、接口、数据流以及技术选型等方面进行的详细设计和规划。它是软件开发过程中的重要组成部分,为开发团队提供了明确的...

MyBatisPlus从零到一:快速入门与核心功能详解(4)

MyBatisPlus从零到一:快速入门与核心功能详解(4)

三、扩展功能3.1 代码生成插件:在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表...

Spring AOP 实战指南:从入门到精通(3)

Spring AOP 实战指南:从入门到精通(3)

3.3 @PointCut:Spring 提供了 @PointCut 注解,把公共的切点表达式提取出来,需要用到时引用该切入点表达式即可,便于后续代码的维护。@Aspect @Slf4j @Com...

Spring AOP 实战指南:从入门到精通(2)

Spring AOP 实战指南:从入门到精通(2)

三、Spring AOP 详解3.1 Spring AOP 核心概念:3.1.1 切点(Pointcut):切点(Pointcut),也称之为"切入点"。Pointcut 的作用就...

微服务保护和分布式事务(4)

微服务保护和分布式事务(4)

二、分布式事务首先我们看看项目中的下单业务整体流程(主要理解思路):由于订单、购物车、商品分别在三个不同的微服务,而每个微服务都有自己独立的数据库,因此下单过程中就会跨多个数据库完成业务。而每个微服务...

【Docker】1.Docker的前身LXC

【Docker】1.Docker的前身LXC

LXC简介:Linux Containers ,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。将应用软件系统打包成一个软件容器内涵应用软件本身的代码,操作系统核心和库...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。