当前位置:首页 > 容器技术 > 正文

容器技术和虚拟机的区别


一、docker容器与虚拟机有什么区别?Docker的特点是结构紧凑、迁移部署速度快、运行高效,但隔离性比服务器虚拟化差:不同的容器有不同的运单(不同的应用实例运行在Docker上),并且相互独立。(独立的)。但它是由同一个存储库管理器(主机操作系统内核)管理的,因此存储库管理器可以看到所有容器的相关信息(因为操作系统内核是共享的,所以相关信息是共享的)。服务器虚拟化就像在坞(物理主机和虚拟化层)之上设置多个独立的“迷你坞”——仓库(虚拟机)。它具有完全独立(中立)的位置,并且适用于不同的客户端(虚拟机所有者)。每个仓库都有自己的仓库管理器(当前虚拟机操作系统内核),无法管理其他仓库。没有数据共享,所以我们必须根据不同的应用场景和需求使用docker技术或使用服务器虚拟化技术。例如,一个典型的Docker应用场景是主机上的单用户Docker实例,这样可以在保证安全性的同时充分发挥Docker的技术优势。


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


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