Docker和虚拟机的区别
在学习微服务的过程中,对于虚拟机和docker的区别产生了疑问,就此进行了总结
1. 什么是虚拟机?
传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有⾃⼰的操作系统,虚拟机⼀旦被开启,预分配给他的资源将全部被占⽤。每⼀个虚拟机包括应⽤,必要的⼆进制和库,以及⼀个完整的⽤户操作系统。像我平常用的VMware就属于虚拟机操作软件。
2. 什么是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中记录了容器构建过程,可在集群中实现快速分发和快速部署;
更多推荐
所有评论(0)