【问题标题】:Should I run the init process inside a Docker container or not? [closed]我是否应该在 Docker 容器中运行 init 进程? [关闭]
【发布时间】:2015-03-12 22:51:34
【问题描述】:

我最近研究了一些关于 Docker 的最佳实践,并就如何或是否处理 init 进程遇到了不同的意见。

正如here 指出的那样,init 进程根本应该运行。我可以遵循这样的想法,即容器应该为单个进程而不是整个操作系统建模。

另一方面,如here 所述,如果我忽略系统日志等基本操作系统服务,可能会出现问题。

通常可能没有关于如何处理这些情况的绝对答案。你能分享一些关于这个话题的经验或更多的见解吗?对我来说,这两种方法似乎都是合法的。

【问题讨论】:

  • 我看不出这是一个主题编程问题。

标签: docker init


【解决方案1】:

通常可能没有关于如何处理这些问题的绝对答案 案例。你能分享一些经验或更多关于这方面的见解吗 话题?对我来说,这两种方法似乎都是合法的。

准点。这个问题没有绝对的答案。

现在,话虽如此,我认为有很多优势 到单个进程每个容器模型,因为那真的 鼓励您创建可组合的容器(如乐高 块:您可以将它们以不同的组合组合在一起以解决 问题)并且是可扩展的(您可以启动更多实例 无需太多努力的特定服务)。通过不做疯狂 比如在你的容器中运行一个 ssh 守护进程,你是 不鼓励“就地”编辑东西,并且会 - 希望 - 更有可能依赖 Dockerfiles 来生成你的图像,这 导致更稳健、可重复的过程。

另一方面,有些应用程序不借 自己对这个模型很好。例如,如果您有一个 派生许多子进程并且不正确的应用程序 wait() 对他们来说,你最终会得到一个僵尸进程的集合。 你可以运行一个成熟的init 进程来解决这个特殊的问题 问题,或者你可以运行一些简单的like this(免责声明:我写了那个)or this

有些应用程序确实是紧密耦合的,虽然它是 可以通过 Liberty 在单独的容器中运行它们 Docker 卷和--net=container:... 的应用,更容易 只是为了让它们在同一个容器中运行。

登录 Docker 尤其具有挑战性。运行 some 之类的 容器内的日志收集器以及您的应用程序可以 该问题的一种解决方案,但也有其他解决方案。 Logspout 很有趣 一,但我也一直在看里面跑systemd 容器,以便使用journald 进行日志记录。所以,虽然 我仍在为每个容器运行一个 application 进程,我也 有一个init 进程和一个journald 进程。

所以,归根结底,这取决于具体情况:两者都取决于您的需求 以及您尝试运行的特定应用程序的需求。 即使在每个容器没有单个 进程 的情况下 可能,设计容器以提供单一的服务 赋予了我在第一段中提到的许多优点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2021-04-27
    • 2014-06-24
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多