自从Linux上的容器变得流行以来,了解Linux容器和虚拟机之间的区别变得更加棘手。本文将向您提供详细信息,以了解Linux容器和虚拟机之间的差异。

Linux容器vs虚拟机 - 应用程序与操作系统

首先要了解的有关容器和虚拟机的一个事情是,一个运用于应用程序,另一个是为操作系统设计的。这就是为什么您经常会看到一些企业应用程序运行在容器上而不是自己的虚拟机上。在虚拟机上使用容器有一些优点。

容器最大的优点之一是可以预留比虚拟机少的资源。请记住,容器本质上是单个应用程序,而虚拟机需要更多资源来运行整个操作系统。

如果您需要运行MySQL,NGINX或其他服务,使用容器是非常有必要。但是,如果您需要在自己的服务器上运行完整的LAMP堆栈,则运行虚拟机更好。虚拟机有着更好的灵活性,可以供您选择您的操作系统,并在您认为合适的情况下进行升级。相比之下,运行已配置应用程序容器在主机的操作系统升级方面是隔离的。

Linux容器vs虚拟机 - 用例场景

我最喜欢使用容器的原因之一就是使用Linux库版本。例如,假设您需要Python的特定版本来开发应用程序。然后,当你在运行应用程序的盒子上更新时,突然发现Python版本发生了变化,导致应用程序无法正常工作。

使用容器的另一个好处是你可以把一个应用程序放到一个容器中,然后在任何支持你正在运行的容器类型的操作系统上运行它。当你想要一个运行在不同Linux发行版应用程序时。通过使用容器,可以在各种不同的发行版上运行类似的应用程序环境。容器提供了可移植性。

容器对于快速的跨发行版部署是更可行的,而虚拟机对于像运行LAMP堆栈这样的单一应用程序使用情况是更好的。

Linux容器vs虚拟机 - 安全性

与容器相比,虚拟机提供了更多的安全性。这并不是说容器不能被保护,而是说,默认的虚拟机提供了更大的隔离。请记住,容器可以共享系统资源而虚拟机不行。

在运行容器时,可以采取一些措施来降低风险,包括避免超级用户权限,确保从可信来源获取容器,并且保持最新状态。有些容器是数字签名的,这有助于确定您可以从可信来源获取容器。

最后,你需要保持容器的单一功能职责。一旦你开始在一个容器下结合软件职责,你会发现还是使用虚拟机最好。重申一下,容器是用于单一用途的应用程序,虚拟机用于多用途的应用程序。坚持这种做法,你将在安全性和整体功能方面处于更好的状况。

Linux容器vs虚拟机 - 选择合适的工具

无论虚拟机或容器类型如何,选择适合您需求的关键都在于研究每个选项的能力。在容器领域,Docker提供了强大的企业解决方案。这就吸引了那些关注Docker容器的公司,因为公司知道如果出现任何问题,他们可以得到他们所需要的支持。Docker是企业用户友好的选择,特别是在Docker Swarms中。而将Docker Swarms 与 Kubernetes 相比,Kubernetes在高级环境中的设置要复杂得多。

回到虚拟机方面,我一直发现Virtualbox可以提供更好的面向桌面的虚拟机环境。而VMware在服务器方面做了各种各样的产品,VMware拥有从存储到云服务器解决方案的各种虚拟机解决方案,还有其他选择(各种管理程序等)。但我认为VirtualBox和VMware很好地代表了桌面到服务器虚拟化的两个领域。

Linux容器vs虚拟机 - 赢家是?

在决定容器还是虚拟机之前,请考虑以下事项。如果你选择容器,但你完全可以在虚拟机上运行容器。了解这一点很重要,因为这里没有明显的赢家或输家。事实上,这两种技术的需求完全不同。

容器将引起媒体的持续关注,因为它们让用户用更少的硬件更高效地运行。在另一方面,虚拟机仍然是服务器和云空间的主要内容。

我认为值得一看的是Kubernetes和Docker Swar之间的事情。我认为看看这两种容器管理技术是如何发挥作用的,以及哪种技术会成为标准。有一段时间,感觉好像是Docker。然而现在,Kubernetes占据了更多的营地。可能随着时间的推移,我们将开始看到Kubernetes成为头条新闻,并成为容器阵营的头号人物。

最新文章

  1. 【转】 XenServer架构之HA概述
  2. Python之路第一课Day10--随堂笔记(异步IO\数据库\队列\缓存)
  3. jsp基础知识
  4. (Array,位操作)137. Single Number II
  5. 普元部署多个应用的方法(适用EOS6.5以上版本,且无需governor中添加应用)
  6. 【读书笔记】iOS-忽略编译警告
  7. Thread源码分析
  8. 【转】纯CSS设置Checkbox复选框控件的样式
  9. rbenv安装ruby2.3.0在线安装不上。老子出绝招了(更新)
  10. ORB:新一代 Linux 应用
  11. javeWeb常用快捷键 Junit for changeableargs enumn reflect
  12. BestCoder Round #49
  13. 通过sharedpreference两个程序共享数据
  14. java 常用的包 默认导入的包
  15. discuz!迁移指南
  16. EduSoho程序上线实录
  17. 《C++ Primer》学习笔记:迭代器介绍
  18. 反射实现java深度克隆
  19. 【ORM框架】Spring Data JPA(一)-- 入门
  20. org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open con

热门文章

  1. Struts2配置详情
  2. 微信-小程序-开发文档-服务端-接口调用凭证:auth.getAccessToken
  3. flutter 插件
  4. [转]C# JSON格式的字符串读取到类中
  5. 记录一次像github开源项目提交pull request(Hexo Next)
  6. jquery scrollTop() 方法
  7. 去除vim ^M符号
  8. Android Telephony分析(四) ---- TelephonyManager详解
  9. 如何用Maven创建web项目(具体步骤)转载
  10. mycat-zookeepr--mycatweb