虚拟机和容器到底差在哪、虚拟化入门,一次讲清两种隔离
买云服务器时给你的是一台虚拟机,部署应用时大家又在说容器,两种东西都能把一台机器切成很多份独立运行,它们到底差在哪?核心区别就一句话:虚拟机虚拟的是一整台电脑,容器共享的是同一个系统内核。本文从隔离方式讲到启动速度、体积和安全边界,看完就知道什么场合该用哪种。
先说虚拟机。你在云厂商那里买的云服务器,绝大多数就是虚拟机:一台强大的物理服务器,通过虚拟化软件切成很多台“假电脑”,每台有自己虚拟的 CPU、内存、硬盘,里面装一套完整的操作系统,跟真电脑用起来没区别。你的系统崩了、装坏了,只影响你这一台,邻居完全无感,因为大家是彻底隔开的。
再说容器。容器不虚拟硬件,它是在同一个操作系统之上,用隔离机制把进程和文件圈成一个个独立的小空间,每个容器里只有应用和它依赖的库,不装完整的操作系统,多个容器共享宿主机这一个系统内核。可以打个比方:虚拟机是把一栋楼隔成很多套带独立水电煤的房子,容器是在同一套大房子里隔出很多间带锁的房间,共用水电总管。
这个区别直接决定了四个实际差异。第一是体积和启动:虚拟机镜像动不动几个 G,启动要走完整的开机流程,快则几十秒慢则几分钟;容器镜像通常几百 M,启动就是起个进程,一两秒就好。第二是资源开销:每台虚拟机都要养一套操作系统,光系统本身就吃掉几百 M 到一两个 G 内存;容器没有这层负担,同一台机器能塞下的容器数量,是虚拟机的好几倍。第三是隔离强度:虚拟机之间是硬件级隔离,一个被攻破很难影响到另一个,所以云厂商敢把互不相识的客户放在同一台物理机上;容器共享内核,隔离弱一档,内核出漏洞有被穿透的风险,多租户场景一般不会让陌生客户共用容器环境。
第四是使用姿势也不同:虚拟机当真电脑用,长期开着、进去装东西改配置;容器讲的是一次性,镜像定好就不改,要更新就用新镜像换掉旧容器,而不是登进去修改。所以两者的关系不是谁取代谁,而是经常套着用:你买一台云服务器这台虚拟机,在它里面再跑十几个容器部署应用,外层用虚拟机保证隔离和计费,内层用容器保证部署快、可复制,两全其美,这也是现在最常见的组合。
怎么选就很清楚了。要长期稳定运行、要跑不同操作系统、隔离要求高,用虚拟机;要快速部署很多份同样的应用、频繁更新、追求密度,用容器;自己的业务系统,两者套起来用。还有个新手容易踩的误区:别把容器当虚拟机养,别往运行中的容器里手动装东西、改文件,下次重启全没了,改动要写进镜像的构建文件里,这才是容器的正确用法。
- 点赞
- 收藏
- 关注作者
评论(0)