当前位置:首页 > 虚拟化 > 正文

docker与传统虚拟化比较(docker虚拟化原理)


一、Docker容器与虚拟机区别我们传统的虚拟机需要模拟整个机器包括硬件每个虚拟机都需要有自己的操作系统一旦虚拟机开机,所有的资源都已经分配给每个虚拟机了,包括应用程序。必须是二进制文件和库,以及完整的用户操作系统。
容器技术与我们的主机共享硬件和操作系统资源,以实现动态资源分配。
容器包含应用程序及其所有依赖项,但与其他容器共享内核。容器在主机操作系统的用户空间中作为单独的进程运行。
虚拟机和容器都是基于硬件和操作系统的虚拟机有一个hypervisor层,hypervisor是整个虚拟机的核心。它为虚拟机提供虚拟运行平台,管理虚拟机操作系统的运行。每个虚拟机都有自己的系统以及系统库和应用程序。
容器没有虚拟机管理程序层,每个容器与主机共享硬件和操作系统资源,因此Linux容器中不存在虚拟机管理程序引起的性能损失。
不过,虚拟机技术也有它的优点,它可以为应用程序提供一个更加隔离的环境,不会因为应用程序漏洞而对主机造成任何威胁。它还支持跨操作系统虚拟化,例如可以在Linux操作系统下运行Windows虚拟机。
从虚拟化的角度来看,传统虚拟化技术是对硬件资源进行虚拟化,而容器技术则是对进程进行虚拟化,从而提供更轻的虚拟化,实现进程和资源的隔离。
从架构上来看,Docker比虚拟化少了两层,它取消了hypervisor层和GuestOS层,使用DockerEngine进行调度和隔离,所有应用程序共享主机操作系统,因此在。从体积上来说,Docker比虚拟机更轻,性能比虚拟化更好,接近裸机性能。
从应用场景来看,Docker和虚拟化各有擅长的领域,在件开发、测试场景、生产维护运营场景上各有优缺点
Docker需要的资源更少Docker在操作系统层面进行虚拟化docker容器和内核交互几乎没有性能损失性能优于通过hypervisor层和内核层进行虚拟化。
Docker更轻Docker架构可以共享共享内核和应用程序库,占用内存很少。在相同的硬件环境下,Docker运行的镜像比虚拟机多,系统利用率非常高。
与虚拟机相比,docker的隔离性较弱。Docker是进程和虚拟机之间的隔离,可以实现系统级的隔离。
安全性:Docker的安全性也较弱。Docker租户root与主机root相同,容器中的用户一旦从普通用户权限升级为root权限,将直接拥有主机root权限,可以进行无限制的操作。虚拟机租户的根权限和主机的虚拟机根权限分离,虚拟机采用IntelVT-d、VT-x等ring-1硬件隔离技术,种隔离技术可以防止虚拟机穿透且彼此交互,而前者尚不具备任何形式的硬件隔离,这使得容器容易受到攻击。
可管理性:Docker的集中管理工具还不成熟。各种虚拟化技术都有成熟的管理工具,例如VMwarevCenter就提供了完整的虚拟机管理能力。
高可用性和可恢复性:Docker对业务的高可用支持是通过快速重新部署来实现的。虚拟化拥有经过生产实践检验的负载均衡、高可用性、容错、迁移、数据保护等成熟的保障机制,VMware可以承诺虚拟机99.999%的高可用性,保证业务连续性。
快速创建和删除:虚拟化需要几分钟,Docker容器创建需要几秒Docker的快速迭代意味着在开发、测试和部署方面可以节省大量时间。
交付部署:虚拟机可以通过镜像实现一致的环境交付,但镜像分发无法在Dockerfile中系统记录容器构建过程,可以实现集群中的快速分发和快速部署;


二、Docker容器是什么?它比虚拟机强在何处?Docker容器是一个开源的应用容器引擎,允许开发者将自己的应用程序以统一的形式打包,然后打包成可移植的容器,然后发布到任何可以安装Docker引擎的服务器上(比如主流的Linux机器或Windows机器),当然虚拟化也是可能的。Docker容器几乎没有性能开销,可以轻松地在机器和数据中心上运行。它最大的特点是不依赖于任何系统、框架甚至语言。
因为容器是进程级别的,所以相对于虚拟机有很多优势
一:启动快:因为容器中的应用软件直接是底层系统进程,而不是在虚拟机进程中。因此,启动容器时,不会启动整个操作系统,速度快很多。
二:资源占用少:相对于虚拟机,容器只填充必要的资源,不会占用无效资源虚拟机是一个完整的操作系统,不可避免地会使用所有资源。
三:体积小、重量轻:容器只需要包含使用过的组件与虚拟机相比,容器文件比虚拟机小得多。
四:轻松移动:容器技术最重要的是在不同主机上运行服务的轻量级且一致的格式。容器格式更加标准化,有利于客户工作负载的迁移,有效避免单一平台提供商。


三、docker与虚拟化的联系与区别虚拟化技术是多种虚拟化技术的总称。总的来说,虚拟化技术包括虚拟机技术和容器技术。
虚拟化技术最大的特点就是将真实的机器进行虚拟分区,然后分区的部分可以独立使用。
有人说:“Docker是一种虚拟化技术。”
有人说:“争论在于虚拟化和Docker容器之间。”
那么,Docker是一种虚拟化技术吗?既然如此,为什么还要说“争论”呢?
其实,准确的说,Docker是一种容器级别的虚拟化技术。
至于虚拟机,官方的说法是这样的:虚拟机(VM)是指一个完整的虚拟机。由软件模拟的具有硬件系统全部功能、运行在完全隔离的环境中的计算机系统
简单地说:我们可以通过虚拟机在多台机器上共享一个硬件,并且每台机器都可以独立运行
容器技术还允许您在一台硬件计算机上虚拟化多个容器,并且每个容器可以托管一个隔离的服务器,因此,我们知道容器实际上是通过虚拟方式实现的。容器技术比虚拟机技术更高效,但是容器不包含独立的操作系统,但虚拟机包含独立的操作系统。。操作系统,因此每个虚拟机比每个容器拥有更多的功能。因为虚拟机有很多东西,所以需要更多的系统资源并且效率较低。
因此,容器既简单又快速。
Docker执行阶段
Docker是C/S架构。一般来说,用户在客户端执行相应的操作,然后将相应的操作指令传递到服务器端,再传递给服务器端的Dockerdaemon来处理
Docker内部的三个核心组件
1Dockerimages
Dockerimages也称为Docker镜像。这些通常是只读模板,用户无法直接写入。可以使用图像轻松创建容器。
目标是更好地保证数据安全。
2.Docker容器
Docker容器也称为Docker容器。容器之间相互隔离,互不干扰。容器可以启动并运行。、停止、删除等操作。
开发者快速将应用打包到容器中发布。
注册表
Docker注册表也称为Docker仓库。存储库主要用于上传和下载图像。存储库分为公共存储库和公共存储库。私人仓库。