Docker多进程容器init进程简介¶
在容器技术领域,有一个咒语 每个容器一个进程
,也就是说你不应该将容器视为传统的 大而全的虚拟机
,而是轻量级专用容器。
然而,事实上,在一个容器中确实运行了多个进程,例如 ENTRYPOINT
就是一个不折不扣的 init process
。有时我们需要在容器中运行多个相互依赖的进程(例如 sidecar ) 或者将历史应用程序迁移到容器环境中,此时我们需要一个传统的进程管理器以便在容器中运行多个进程。
不同的进程管理器¶
Systemd进程管理器 - 大而全的系统进程管理器,功能复杂且强大,对于Docker容器环境 Docker systemd进程管理器 是比较重的解决方案,但是符合传统运维管理模式
supervisord进程管理器 - 易于使用的进程管理器
monit 小型的进程管理器
s6 非常著名的进程管理器,在 s6-overlay 项目提供了精彩的文档,并被很多用户推崇。我将在 Docker s6进程管理器 中实践。
Docker tini进程管理器 是Docker默认进程管理器