9

我最近发现rkt了 Docker 的竞争对手容器运行时。似乎rkt不需要守护进程。对我来说,rkt就像运行任何其他命令一样,它可以轻松地与 systemd(或其他 init 系统)一起使用。

这让我想知道 Docker 守护程序的实用性。

为什么 Docker 需要守护进程?没有它,守护进程提供了什么是不可能的?它的唯一目标是消除对像 systemd 这样的初始化系统的需求(可以在 Rancher OS 中看到)吗?

4

1 回答 1

5

Docker 被设计为一个客户端/服务器应用程序,它允许您远程访问 docker API。这允许像基于经典容器的 swarm 这样的工具,它们实际上是 docker 主机集群的反向代理。

守护进程还为共享状态提供了场所。它正在根据容器的重启策略重启容器。但它也在管理可能在多个容器之间共享的网络和卷。

最后,随着 swarm 模式的引入,守护进程也是这些工具的中心位置,否则这些工具将作为自己的守护进程运行,并使用 Kubernetes 等工具。

如果您需要一个无守护进程的解决方案,但又像 docker,那么请考虑使用runc,它是 docker 默认为每个容器使用的运行时环境。

这不涉及容器内的初始化。如果您需要,docker 现在包含一个可选的 init,您可以为每个容器启用它。如果你需要一些东西来清理僵尸进程,你总是可以选择包含你自己的 init,比如 tini。

于 2017-07-02T01:30:14.103 回答