我看到简历,如果发现同时做过容器和虚拟机的运维的童鞋,我基本都会问这样一个问题,你认为容器和虚拟机真正的差别 ?
目前我个人看来很少有听到比较全面的答案,由于这个是一个相对开放的问题,没有标准答案,我说一下我个人的观点,供大家参考。
技术差异看过很多技术文章,大概都会引用下面的图,介绍容器和虚拟机的差别。都会说到容器是共享和内核的,而虚拟机则是独立内核之类的观点。
当看过我之前发的 容器的江湖门派的文章就知道,容器也可以有独立内核方案,容器和虚拟机的区别并不在此。当然他们是两种技术,他们在技术上的差异我感觉更多的是容器镜像,不要小瞧了容器镜像,它将二进制以及他们的运行环境打包成一个OCI格式的文件,这个文件可以在任何标准的RUNC环境中启动,这套标准将彻底改变程序的发布方式。
理念差异但我个人觉得容器和虚拟机最大的差别还是在使用的理念上的差别,虚拟机还是一直资源的交付方式,交付多个CPU多少内存。围绕虚拟机构建的 IaaS 生态也是围绕资源管理而构建的,譬如块存储、安全组、虚拟机网卡等,都是是一种资源交付方式。
而容器则是一种服务交付的方式,把服务作为管理对象,甚至通过k8s的编排,可以将多个服务管理起来。围绕容器建立的生态圈,管理的对象都是服务维度的,不在考虑资源层面,各种底层资源交给容器和k8s完成。从虚拟机到容器,从资源管理到服务管理,越来越靠近应用程序。