i最近发现了竞争对手的容器运行时rkt
。rkt
似乎不需要守护程序。对我来说,rkt
就像运行任何其他命令,并且可以轻松地与SystemD(或其他Init Systems(一起使用。
这让我想知道Docker守护程序的实用性。
为什么Docker需要守护程序?没有它,守护程序提供了什么?它是消除对诸如SystemD之类的Init系统的唯一目标(如Rancher OS可以看到(吗?
docker被设计为客户端/服务器应用程序,该应用程序允许您远程访问Docker API。这允许诸如经典集装箱之类的工具,这些工具实际上是docker主机集群的反向代理。
守护程序还为共享状态提供了一个地方。它根据其重新启动政策重新启动容器。但这也是管理多个容器之间可以共享的网络和卷。
最后,随着群体模式的引入,守护程序也是这些工具的中心位置,否则这些工具将作为自己的守护程序运行,并带有kubernetes等工具。
如果您需要一个无守护程序的解决方案,但是像Docker一样,请考虑使用docker默认情况下对每个容器使用的运行时环境。
这不涉及容器内部的初始化。如果需要,Docker现在包括一个可选的初始化,您可以每个容器启用。而且,如果您需要一些东西来清理僵尸进程,那么您一直可以选择包括自己的初始化,例如Tini。