Docker:容器化和虚拟化

米饭10个月前行业资讯900

虚拟化

虚拟化是一种资源管理技术,它将计算机的各种实体资源(如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 常用命令

 一、Docker 基础命令1、启动 dockersystemctl start docker2、关闭 dockersystemctl stop docker3、重启 dockersyste...

云端之上的边缘:解读云计算与边缘计算的战略融合

云端之上的边缘:解读云计算与边缘计算的战略融合

一、引言在当前的信息化和数字化浪潮中,云计算和边缘计算作为两种重要的计算模型,各自在不同的场景中发挥着不可替代的作用。它们不仅在概念、特点、应用场景上有所不同,而且在实际应用中常常相互协作,形成了一种...

JAVA 程序员-云计算学习路径

JAVA 程序员-云计算学习路径

课程内容关系图第一章:容器化基础云计算简单概念测试安装 Nginx服务器的安全组设置按量付费优点私有网络 VPC 实战Docker 基础概念开通华为服务器Docker 安装镜像操作容器操作修改容器内容...

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 CrashLoopBackOff 表示某个容器在启动后崩溃,Kubernetes尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增...

运维初入门之认识运维,运维日常的工作都在干什么

运维初入门之认识运维,运维日常的工作都在干什么

运维是指系统运维,是指负责维护、管理和优化计算机系统和网络设备的工作。运维日常的工作主要包括系统监控、故障处理、性能调优、安全防护、备份和恢复、资源规划等多个方面。以下是对运维日常工作进行详细说明的2...

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

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

四、分页插件MybatisPlus 提供了很多的插件功能,进一步拓展其功能。目前已有的插件有:PaginationInnerInterceptor:自动分页TenantLineInnerInterce...

发表评论    

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