虚拟机是一套完整的OS,隔离性最强,但是同时也是其缺点,复杂冗余,略显笨重。docker是依赖linux内核技术的轻量级容器技术,并且支持dockfile的定制化加载,灵活而轻巧。
收起都是虚拟化技术,只不过docker是基于内核的虚拟化,虚拟机是基于“镜像”的技术。
1.Docker实现秒级启动,虚拟机一般都要分钟级启动;
2.Docker通过build-ship-run实现快速部署,虚拟机一般要经过安装、调试、兼容性考虑等部分(与装物理机无异);
3.Docker是敏捷开发的佼佼者,虚拟机过于笨重。
4.还有很多不同。。。
本质区别:
虚拟机的虚拟化:通过kvm、xen技术,虚拟出操作系统的运行环境如内存、cpu、设备等,可以在其上运行linux、windows等操作系统。重点中的重点,宿主机操作系统与虚拟机中的操作系统是两个完全隔离的环境。
docker:容器技术本质上就是一个守护进程拉起一个子进程,守护进程在启动子进程前通过cgroup、namespace等,将linux系统的各种文件做了隔离,如pid、cpu、mem、net等。重点中的重点,容器只是宿主机上的一个进程,依赖宿主机linux系统操作内核运行,即容器没有自己真正意义上的操作系统。
1.实现区别:虚拟机的本质实现硬件资源可编程,是操作系统级别的复制与移植;容器的本质是基于共享内核基础之上的进程级隔离(例如namespace,cGroup,UnionFs分别实现进程,网络,文件系统的隔离);
2.应用场景区别:虚拟机设计之初是对硬件资源进行再分配,提高资源利用率,属于基础设施一部分;容器设计之初是构造最小的应用运行环境单元,为应用服务,属于应用层;
VMWare/OpenStack的虚拟化技术为我们打开了一扇新的大门,原来我们可以不用如此麻烦的管理物理机,采用虚拟化的技术,同时辅助各种工具,可以更好的实现对资源的管理,提高资源的利用率。当没有容器技术时,为了实现应用的快速发布和运维,会有两个问题:
如果没有虚拟化,容器编排系统Kubernetes直接接入物理机,如果说在私有云情况下还可以通过一系列物理机纳管工具实现灵活的资源分配与回收,那么在公有云场景下,厂商将自己的物理服务器都拿出来供用户自由申请分配,单是想想就能明白,对用户来说成本只会高不低,推广难度自然是很大。当然,为了特定的需求,公有云厂商为用户直接提供特定硬件的服务器,甚至是托管数据中心,是另外一种场景了。
总的来说,虚拟化技术使得数据中心内的管理对象从静态的物理机编程动态的虚拟机,容器技术则是在虚拟化技术基础之上实现应用的打包构建、部署调度和运行,二者绝不是为了解决同一种问题搞出来两种方案,而是互为补充,二者结合起来才使得云计算IaaS/PaaS理念真正落地。
收起1、虚拟化原理不一样,尽管很多人现在把容器当虚拟机使用
2、适用场景不同,容器有自己的特点,比如启动快、使用资源更少、扩缩容方便等,容器更偏业务一些
3、主机运行容器使用同一个主机内核,安全性没有虚拟机高
举例说明,目前在生产环境,容器跑数据库的不多,数据库还是运行的传统环境或者虚拟机环境,中间件容器化的比较多。
收起1.Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
2.容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
3.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。
4.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。
5.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。
6.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。
7.当然KVM对比于容器也有一个比较大的优势就是可以使用不同的操作系统或内核。所以,举例说,你可以使用微软Azure,同时运行Windows Server2012的实例和SUSE Linux企业级服务器的实例。至于Docker,所有容器都必须使用同样的操作系统和内核。
收起