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

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

我目前正在从功能强大的根服务器迁移到功能较弱且价格较便宜的服务器。在根服务器上,我将一些服务隔离到单独的虚拟机中。在新服务器上这是不可能的。但如果可能的话,我希望对某些服务仍进行隔离。

目前,我正在考虑使用 docker 进行这种隔离。但我不确定 docker 是否是合适的工具。我尝试在 Google 上寻找答案,但我发现的有关 docker 的大多数帖子仅与用于开发、ci 或测试目的的短期容器有关。对我来说,它更像是拥有一个长期容器,该容器运行例如带有 nginx、php 和 mysql/mariadb 的 Web 服务堆栈(而 db 甚至可能有自己的容器)和运行其他服务的其他容器。

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

答案1

Docker 广泛用于需要长时间运行的 Web 应用。目前,我在生产环境中使用 Docker 运行以下应用

  • php-fpm 应用程序
  • celery 队列工作者(python)
  • nodejs 应用程序
  • Java tomcat7

答案2

就像所有判断一样,任何答案都会有一些意见。尽管如此,说容器化不是虚拟化它们是不同的技术,以不同的方式工作,具有不同的优点和缺点。将容器化视为精简虚拟化犯了一个根本性的错误,就像将虚拟客户机视为廉价的专用服务器一样,这是一个错误。我们在 SF 上看到很多人问起,他们购买了容器作为“便宜的 VPS“;他们误解了自己所拥有的东西,试图将其视为虚拟客人,从而给自己带来了麻烦。

容器化对于开发工作来说无疑是极好的:它能够快速启动大量环境,因此可以非常轻松地在缓慢变化的参考后端的多个快速变化副本上进行开发。请注意,在这种情况下,容器在基础设施和功能上都非常相似;它们本质上都是单个后端的略有不同的副本。

当人们尝试在单个主机上容器化多个发行版,或者客户机在内核模块方面有不同的需求,或者出现外部硬件连接问题时,可能会出现麻烦 - 以及在许多其他与容器化确实运行良好的场景不同的情况。

如果您决定在容器上部署生产,请牢记您已完成的工作,不要陷入将您的部署视为虚拟化的思维定势;请注意,省钱会带来机会成本。量力而行,您很可能会有很好的体验。但是,如果您自己(或者更常见的是管理层)误解了您已完成的工作,麻烦就可能接踵而至。

相关内容