【问题标题】:Do containers always require less resources or do they create additional overhead容器总是需要更少的资源还是会产生额外的开销
【发布时间】:2017-07-11 15:02:34
【问题描述】:

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

  • 快速部署
  • 便携性
  • 安全性
  • 隔离
  • 版本控制
  • 占用空间小,开销最小

我的问题:

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

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

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

关于docker的视频:https://www.youtube.com/watch?v=YFl2mCHdv24

【问题讨论】:

    标签: apache docker virtual-machine containers


    【解决方案1】:

    我发现了这个forum reply by someone at Docker

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

    这篇文章似乎表明 Docker 确实会带来与给定主机系统上运行的容器数量呈线性关系的开销。这与使用 Golang 编写的 Docker 以及 Golang 的运行方式有关。

    在某些时候,运行的容器数量是否会产生比直接在主机上运行所有工具所消耗的资源更多的开销?

    从前面提到的 Docker 工作人员的反应来看,情况似乎是这样的。不过,我不会孤立地看待“开销”;由于技术原因,在一台主机上运行 40 个不同版本的不同 Java 容器是不现实的。 Docker 允许您轻松地做到这一点,因为它隔离了每个进程。

    因此,如果我可以做一个倾斜的比较,在一台主机上管理 40 个 Java 应用程序所产生的人力管理开销肯定会比通过将它们容器化可能节省的额外系统资源成本更高。

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

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

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

    【讨论】:

    • 感谢您的详尽回答和引用参考!您是否知道如何确定它将创建多少容器(取决于运行的应用程序)以达到机器的限制。我意识到这个数字会因机器的不同规格而异。我对树莓派 3 的能力特别感兴趣!如果您不知道,您会知道我寻找这个答案的好地方吗?
    • @ob1 你可以尝试一个简单的docker-compose文件,然后使用docker-compose scale逐个添加容器,同时监控树莓派上的系统资源。
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多