为什么Docker有一个守护进程?

时间:2017-06-30 05:57:45

标签: docker rkt

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

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

为什么Docker需要一个守护进程?守护进程提供了什么,没有它是不可能的?它的唯一目标是不再需要像systemd那样的init系统(在Rancher操作系统中可以看到)吗?

1 个答案:

答案 0 :(得分:1)

Docker被设计为客户端/服务器应用程序,允许您远程访问docker API。这允许像经典的基于容器的swarm这样的工具有效地成为docker主机集群的反向代理。

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

最后,随着swarm模式的引入,守护进程也是这些工具的中心位置,否则它们将像kubernetes一样作为自己的守护进程运行。

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

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