docker与虚拟机的区别:1、docker启动快速属于秒级别,而虚拟机通常需要几分钟去启动;2、性能损耗不同,docker需要的资源更少;3、隔离性不同,docker属于进程之间的隔离,隔离性较弱,而虚拟机可以实现系统级别的隔离。
本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。
虚拟机:虚拟机是通过Hypervisor(虚拟机管理系统,常见的有VMWare workstation、VirtualBox),虚拟出网卡、cpu、内存等虚拟硬件,再在其上建立虚拟机,每个虚拟机是个独立的操作系统,拥有自己的系统内核。
容器:容器是利用namespace将文件系统、进程、网络、设备等资源进行隔离,利用cgroup对权限、cpu资源进行限制,最终让容器之间互不影响,容器无法影响宿主机。
docker的优势
运行在容器上的docker的程序,直接使用的都是宿主机的硬件资源,因此在cpu、内存、利用率上,Docker将会在效率上具有更大的优势
Docker直接利用宿主机的系统内核,避免了虚拟机启动时所需要的系统引导时间和操作系统运行的资源消耗,利用Docker能够在几秒钟之内启动大量的容器,是虚拟机无法办到的。快速启动低资源消耗的优点,使Docker在弹性云平台自动运维系统方面具有很好的应用场景。
容器的启动时间是秒级的,大量节约开发、测试、部署的时间。还有一个非常关键的点,就是Docker能够高效地部署和扩容,Docker容器几乎可以在任意平台上运行,包括虚拟机、物理机、公有云、私有云、个人电脑、服务器等,这种兼容性,可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。
但是,虚拟机的安全性比容器好一些,docker与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机造成影响。
区别
1、启动速度不同
docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动。
2、性能损耗不同
docker 需要的资源更少,docker 在操作系统级别进行虚拟化,docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化。
3、系统利用率不同
docker 更轻量,docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高。
4、隔离性不同
与虚拟机相比,docker 隔离性更弱,docker 属于进程之间的隔离,虚拟机可实现系统级别隔离。
5、安全性不同
docker 的安全性也更弱。Docker 的租户 root 和宿主机 root 等同,一旦容器内的用户从普通用户权限提升为 root 权限,它就直接具备了宿主机的 root 权限,进而可进行无限制的操作。虚拟机租户 root 权限和宿主机的 root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
6、可管理性不同
docker 的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如 VMware vCenter 提供完备的虚拟机管理能力。
7、可用和可恢复性不同
docker 对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制,VMware 可承诺虚拟机 99.999% 高可用,保证业务连续性。
8、创建、删除速度不同
虚拟化创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间。
9、交付、部署速度不同
虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署;
推荐学习:《docker视频教程》
以上是docker与虚拟机的区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!