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

docker容器与虚拟机的区别


一、Docker是什么?它比虚拟机强在哪里?Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序或软件移植到映像中,然后将其发布到任何Windows或Linux计算机。当然,Docker也可以实现虚拟化。一个完整的Docker由:DockerClient客户端、DockerDaemon守护进程、DockerImage镜像和DockerContainer容器组成。容器完全采用沙箱机制,彼此之间不会有任何接口。
Docker比虚拟机更强大的是:
第一:启动时间:Docker容器在几秒内启动,而虚拟机在几分钟内启动。在启动速度上,Docker可以完美碾压虚拟机。
第二:空间使用和性能:在空间使用和性能方面,Docker容器镜像比虚拟机更小、更强大。
第三:使用要求:虚拟机是基于硬件虚拟化的,其CPU也必须支持虚拟化。Docker共享主机内核,可以运行在传统Linux上,无论CPU是否支持虚拟化技术。


二、Docker这样的容器技术与虚拟化技术的区别是什么?Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序和依赖项打包到可移植容器中,然后将其发布到任何也可以虚拟化的流行Linux机器。容器完全使用沙箱机制,相互之间没有接口(类似于iPhone应用程序)。几乎没有性能开销,可以轻松地在机器和数据中心上运行。最重要的是,它们不依赖于任何语言、框架或系统。
Docker网站上提到了典型的Docker场景:
自动打包和部署应用程序
创建轻量级、私有的PAAS环境
自动化测试和持续集成/部署
部署以及Web应用程序、数据库和后端服务的扩展
因为它基于LXC。轻量级虚拟化相对于KVM等的特点是启动快、资源消耗低。因此,需要构建一个隔离的、标准化的运行环境,一个轻量级的PaaS(如Dokku),自动化测试和持续集成环境,以及任何可以水平扩展的应用程序(尤其是需要快速启动和停止的Web应用程序)。应对高峰和低谷)。
为了创建标准化的操作环境,大多数现有解决方案包括在BaseOS上运行一系列Puppet/Chef或图像文件。缺点是前者需要BaseOS的许多先决条件,而后者几乎不可能更改(因为copyonwrite的文件格式在运行rootfs时是只读的)。另外,后者文件较大,环境管理和版本控制本身也存在问题
PaaS环境从设计之初就被使用,对于Dotcloud来说,它是作为环境基础。PaaS产品
由于其标准化的构建方法(Buildfile)和良好的RESTAPI,自动测试可以与持续集成/部署很好地结合
由于LXC的轻量级特性,启动速度快,Docker只能加载每个容器的变化部分,这样就需要很少的资源并且可以在独立环境中使用,KVM等虚拟化解决方案可以更快并且使用更少的资源
虚拟化是一个广义的术语,在计算机中,通常指的是在虚拟基础上运行而不是在真实基础上执行的计算元素。
虚拟化原本是指资源的抽象,即H。单个物理资源的多个逻辑表示或多个物理资源的单个逻辑表示。特别对于服务器虚拟化来说,它是多个物理资源的单一逻辑表示。
虚拟化技术可以扩展硬件的容量并简化软件的重新配置过程。CPU虚化技术可以用单个CPU模拟多个CPU并行,使一个平台可以同时运行多个操作系统,应用程序可以在独立的区域运行而不互相影响,大大提高了计算机工作的效率。
在实际生产环境中,虚拟化技术主要用于解决高性能物理硬件容量过剩和旧的低容量硬件的重组复用问题,并使底层物理硬件变得透明,从而最大限度地提高性能。物理硬件的利用率。


三、容器和虚拟机的区别容器和虚拟机的区别:
容器:在程序层面创建在操作系统上,容器安装在操作系统上,共享同一个操作系统,直接使用操作系统的内核操作系统。
虚拟机:在操作系统、操作系统级别上创建,具有独特的操作系统和负载,并且依赖于虚拟机管理程序。
容器:快速创建/部署应用程序、小型实例、更轻松的镜像创建以及大规模集群。
虚拟机:创建过程比较复杂,需要创建操作系统和应用程序。实例大,集群规模小。
容器:持续开发、集成和部署,提供可靠、频繁的容器镜像构建/部署,支持快速、简单的回滚
虚拟机:支持持续开发、集成和部署,但实现过程复杂,自动化程度较低,支持复杂的快照回滚。
容器:开发和运维分离,在构建或发布阶段创建容器镜像,实现应用与基础设施的解耦。
虚拟机:支持多段构建,镜像要求高,流程耦合度高。
容器:开发、测试、生产环境的一致性,本地或外部运行的一致性。
虚拟机:自定义镜像以实现环境一致性
容器:云平台或其他操作系统,可以在Ubuntu、RHEL、CoreOS、on-prem、GoogleContainerEngine或任何其他操作系统中使用运行环境。
虚拟机:可以运行在几乎所有操作系统上。
容器:监控水平较低,缺乏完整的监控平台。
虚拟机:监控水平高,很多监控系统也比较完善。
容器:松耦合、分布式、弹性扩展、基于微服务,应用程序被划分为更小的、独立的组件,可以动态部署和管理。
虚拟机:分布式、弹性扩展、基于基础设施、大型应用程序、支持高度复杂的优化、独立组件、动态部署和管理。
容器:安全性目前一般,软件隔离,资源隔离,资源利用效率更高。
虚拟机:安全性高,硬件隔离、资源隔离,资源利用效率低于容器,性能依赖于硬件提供的虚拟化技术。