我最近发现rkt了 Docker 的竞争对手容器运行时。似乎rkt不需要守护进程。对我来说,rkt就像运行任何其他命令一样,它可以轻松地与 systemd(或其他 init 系统)配合使用。
这让我想知道 Docker 守护进程的效用。
为什么 Docker 需要守护进程?守护进程提供了哪些没有它就不可能实现的功能?它的唯一目标是消除对 systemd 等初始化系统的需求(如 Rancher OS 中所示)?
Docker 被设计为客户端/服务器应用程序,允许您远程访问 Docker API。这使得诸如基于经典容器的 swarm 之类的工具可以有效地成为 Docker 主机集群的反向代理。
守护进程还提供了共享状态的地方。它根据容器的重启策略重新启动容器。但它还管理可能在多个容器之间共享的网络和卷。
最后,随着 Swarm 模式的引入,守护进程也是这些工具的中心位置,否则这些工具将作为自己的守护进程与 kubernetes 等工具一起运行。
如果您需要无守护程序的解决方案,但又像 docker,那么请考虑使用runc,这是 docker 默认为每个容器使用的运行时环境。
这不涉及容器内的init。如果您需要,docker 现在包含一个可选的 init,您可以为每个容器启用它。如果您需要一些东西来清理僵尸进程,您总是可以选择包含您自己的 init,例如 tini。
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |