docker适合长期运行的容器吗?

我目前正在从一个强大的根服务器迁移到一个function较弱,最明显更便宜的服务器。 在根服务器上,我有一些服务被隔离到不同的虚拟机中。 在新的服务器上这是不可能的。 但是,我想仍然有一些孤立的一些服务…如果可能的话。

目前我正在考虑使用docker进行隔离。 但是我不确定docker是否是正确的工具。 我试图谷歌的答案,但是我发现有关docker的大多数post只与开发,ci或testing目的的短期容器有关。 在我的情况下,它会更像是一个长期的容器,运行如nginx,php和mysql / mariadb(而数据库甚至可能获得自己的容器)和其他服务运行其他容器的Web服务堆栈。

所以我的问题是:Docker是否适合长时间运行容器的任务。 或换句话说…是docker工人可以作为基于虚拟机的“替代品”吗?

Docker被广泛用于长时间运行的应用程序。 目前在生产中,我有以下在docker中运行

  • php-fpm应用程序
  • 芹菜排队工(python)
  • nodejs应用程序
  • java tomcat7

与所有的判决电话一样,在任何答案中都会有一些意见。 尽pipe如此, 集装箱化不是虚拟化 ,这是毫无疑问的。 他们是不同的技术,以不同的方式工作,各有利弊。 把容器看作虚拟化是一个根本性的错误,就像把虚拟客户当成廉价的专用服务器一样是一个错误。 我们看到很多关于顺丰出售集装箱作为“ 便宜的VPS ”的人的问题; 误解了他们所拥有的东西,他们试图把它当作一个虚拟的客人,并给自己造成麻烦。

集装箱化对于开发工作来说无疑是极好的:它可以使大量的环境快速地分解,从而使缓慢变化的参考后端的多个快速变化的副本的开发变得非常容易。 请注意,在这种情况下,容器在基础设施和function方面都非常相似; 他们都是单一的后端的基本上不同的副本。

当人们尝试在单个主机上容纳多个发行版,或者客户机在内核模块方面有不同的需求,或者外部硬件连接性出现问题时,可能会出现问题 – 在许多其他可比较的情况下,集装箱化确实运行良好。

如果您决定在容器上部署生产,请记住您所做的事情,而不要将其视为虚拟化的思维方式; 要知道,省钱有与之相关的机会成本。 根据你的布料剪裁外套,你可能会有很好的体验。 但是让自己(或者更常见的是pipe理层)误解你所做的事情,并且可能会遇到麻烦。