当前位置: 首页 > news >正文

别轻易说取代:容器不会取代虚拟机

自容器概念兴起,就有很多人认为:容器将取代虚拟机,容器作为"虚拟化2.0"概念获得企业和开发者的关注。笔者认为,容器非但不会取代虚拟机,相反,二者或将形成一种互为补充的姿态,优化企业的IT体系。

容器的代表作Docker

对于很多程序员来说,或许还不够了解容器,但一定听说过Docker。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,Docker称之为:Build once,Run anywhere。

很多人都听说过Dcoker获得了IBM、微软、惠普、腾讯等企业的支持,其中Docker在腾讯英雄联盟游戏中的表现更让很多人都坚信,以Docker为代表的容器必然在不久的将来彻底代替虚拟机。

而Docker作为最流行的容器工具,和容器目前的事实标准收到越来越多人的关注,究竟容器/Docker与虚拟机之间的博弈会以何种方式收场,我们还不得而知,但笔者预测,未来容器技术可能会与虚拟化技术成为相辅相成的关系。

Docker与镜像概念

在2016年的DockerCon大会上,Docker再次推翻了之前PaaS层定义,树立了一个自己的新标准:Serverless无服务器架构。同时,Docker的镜像概念已经成为很多依托Docker技术成立的云企业的卖点。

镜像可以应用程序和它的应用环境一起打包,形成一个"集装箱",放入仓库。然后这个集装箱随时下载、解压、应用,减轻了开发者的负担,不但迅速还能够保证一致性。

Docker PK虚拟机

TCO:根据相关机构调查显示,超过百分之四十的企业选择用Docker是因为它比虚拟机更便宜。由于Docker是一款开源的容器引擎,这决定了Docker本身免费的事实。

而虚拟机是相较传统物理机更为节约资源的方式,因为它能形成一个有效的、独立的真实机器的副本,进而节约企业TCO,受到很多企业的欢迎。

敏捷性:当敏捷开发、微服务等概念逐渐深入,轻量化已经成为一种新风向。Docker直接建立在操作系统上的方式在启动方式,让秒级启动成为新常态,获得很多企业的认可。而模块化让扩展和迁移都更迅速、可靠,Docker允许我们轻松将应用程序的功能拆分成多个独立容器,让Docker轻量化特点进一步凸显。

安全性:与真实的物理机相比,虚拟机因为Hypervisor层的存在,让小白用户也可以对虚拟机进行任何操作,无须担心对机器本身造成任何损害。对于企业而言,虚拟机经过四十余年的发展已经成为一种成熟的IT技术,在隔离性、安全性上,虚拟机也显得更为无可挑剔,相比之下,虚拟机也更为安全。而Docker目前备受诟病的一个点就是:隔离性和安全性。

从实现原理上讲,Docker有着比虚拟机更少的抽象层,不需要硬件资源池化,不需要Guest OS。与容器相比,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源,为用户提供一个隔离性更强的系统环境。

结束语

Docker或者说容器技术和虚拟机并非简单的取舍关系,如果你希望一个完全隔离的和资源有保障的环境,那么虚拟机是你的不二选择;如果你只希望进程之间相互隔离,同时拥有轻量化的属性,那么linux容器技术或者Docker,才是更好的选择。


本文作者:鲁畅

来源:51CTO

相关文章:

  • Android带你解析ScrollView–仿QQ空间标题栏渐变
  • 向上扩展型SSD 将可满足向外扩展需求
  • Lua程序块(chunk)
  • Handler、Looper与MessageQueue源码分析
  • 安装PHP加速插件ZendOpcache
  • 织梦dedeCMS留言薄
  • 23.头有点大
  • PHP 学习 遇到坑的第一章
  • Hadoop-2.4.1学习之Streaming编程
  • socket.io+express实现聊天室的思考(三)
  • 高盛AI生态报告:美国仍是主导,中国正高速成长
  • 【干货】JavaScript DOM编程艺术学习笔记1-3
  • WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)
  • [jQuery]10 Things I Learned from the jQuery Source
  • 并查集(进阶)
  • SegmentFault for Android 3.0 发布
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2019.2.20 c++ 知识梳理
  • Debian下无root权限使用Python访问Oracle
  • Git 使用集
  • JavaScript的使用你知道几种?(上)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel 中的一个后期静态绑定
  • mysql常用命令汇总
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 爱情 北京女病人
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 分布式熔断降级平台aegis
  • 关于springcloud Gateway中的限流
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 无服务器化是企业 IT 架构的未来吗?
  • 异常机制详解
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (16)Reactor的测试——响应式Spring的道法术器
  • (windows2012共享文件夹和防火墙设置
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二开)Flink 修改源码拓展 SQL 语法
  • (二十三)Flask之高频面试点
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (剑指Offer)面试题34:丑数
  • (十) 初识 Docker file
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (学习日记)2024.01.19
  • .“空心村”成因分析及解决对策122344
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • :“Failed to access IIS metabase”解决方法
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945