我正在努力决定何时使用LXC容器比使用完整虚拟机更好。
您是否有任何精确的用例可能会以某种方式带来一些争论?
LXC更加面向“PaaS”,无需硬件控制即可运行应用程序吗? 我们是否总是需要在“IaaS”视角使用VM,我们需要基础架构控制?
此致
答案 0 :(得分:8)
LXC就像一个关于类固醇的chroot监狱。为了论证,您可以将其视为轻量级VM(即使它根本不是VM)。
如果你已经完成了编写一个专门用于短暂基础设施的应用程序的工作,那么LXC只是让你以更少的开销实现它。
对我而言,LXC最酷的事情就是围绕它发展的社区。考虑像docker这样的东西 - 码头图像相对便携。它提供了在物理硬件上配置相同容器的工具,或在桌面上运行的VirtualBox VM中,或在Amazon或Rackspace提供的VM中配置相同容器的工具。这让我们更接近于一次性写作的梦想。
答案 1 :(得分:5)
我不认为IaaS需要虚拟机。使用LXC,您可以定义cpushare的#和内存用户限制。
事情是VM很重,所以例如PHP / MySQL / Apache,你会有1个VM。 由于LXC很轻,你可以有3个LXC,所以它更适合缩放,(如果你需要shard mysql,只需复制mysql LXC)
答案 2 :(得分:2)
LXC的启动速度比虚拟机快得多,并且每个容器使用的主机资源少于虚拟机,因此它们非常适合将大量隔离进程打包到一台主机上和/或经常启动它们的组合。
一个用例是在可重现的环境中运行单元测试(当与Docker提供的快照文件系统结合使用时)。您可以启动整个容器,运行测试,然后尽快运行测试将其关闭。 LXC的好处是测试的所有非内核依赖性都在容器内。它甚至可能是Linux的不同风格(例如,主机可能是Ubuntu,容器可以运行Centos,但它们必须共享主机的内核)。
答案 3 :(得分:1)
对我而言lxc的优势在于它可以帮助您拥有一个非常小的环境。因此,当您只有一个应用程序在其上运行时,它会使用full。如果您希望在您的环境中运行多个应用程序,则VM会更好。 VM更好的另一种情况是你想要使用另一个内核而不是主机内核。
对我来说,lxc只是一个非常轻便的VM系统。速度和尺寸更好。但约束不能成为你所需要的。