容器总是需要较少的资源,还是会产生额外的开销

时间:2017-07-11 15:02:34

标签: apache docker virtual-machine containers

我一直在学习Docker及其优点。这些优点包括但不限于:

  • 快速部署
  • 便携性
  • 安全
  • 分离
  • 版本控制
  • 占地面积轻,占地面积小

我的问题:

  • 在主机上运行多个应用程序(如Zeppelin,Hadoop,Flume等)的压力总是会减轻。在单个docker容器中,还是将应用程序虚拟机添加到容器顶部(docker会产生开销)?

  • 在某些时候,运行的容器数量会产生一些开销,这会比直接从主机上运行所有工具花费更多资源吗?

  • 在一个容器中运行所有应用程序会更好吗?

有关码头工具的视频:https://www.youtube.com/watch?v=YFl2mCHdv24

1 个答案:

答案 0 :(得分:0)

我发现了forum reply by someone at Docker

  

在主机上运行多个应用程序(如Zeppelin,Hadoop,Flume等)的压力总是会减轻。在单个docker容器中,或者应用程序虚拟机是否会添加到容器顶部(docker会产生开销)?

该帖子似乎表明Docker确实带来了与给定主机系统上运行的容器数量呈线性关系的开销。这与使用Golang编写的Docker以及Golang如何运作有关。

  

在某些时候,运行的容器数量会产生一些开销,这会比直接从主机上运行所有工具花费更多资源吗?

从前面提到的Docker员工的反应来看,似乎情况就是如此。我不看"开销"虽然孤立;由于技术原因,在一台主机上运行40个不同版本的Java容器是不切实际的。 Docker允许您轻松完成此操作,因为它隔离了每个进程。

因此,如果我可以进行一次倾斜的比较,那么在一台主机上管理40个Java应用程序所产生的人力管理开销肯定会比通过前述容纳它们而节省的额外系统资源更高。

  

在一个容器中运行所有应用程序会更好吗?

假设这里的上下文是系统开销,并考虑到Docker进程开销与运行容器计数的线性扩展,更少的容器=更少的Docker进程开销。与上一个问题类似,您可能会通过将所有内容集中到一个容器中来引入复杂性,这会使一些不良的灵魂花费大量时间进行故障排除或修复。

如果您有多个部分(Web服务器,应用服务器,数据库,内存缓存,activemq),将它们放在一个容器中最终会变得非常低效,因为您无法单独扩展它们。如果您需要扩展应用服务器,则无法扩展您的应用服务器,您还必须不必要地扩展容器中的所有其他服务。