在 Docker 容器中使用进程管理器有什么好处?

Hyp*_*cus 7 monit supervisord docker

正如杰罗姆所说,

您还需要添加一个流程管理器;例如监视器或主管。这是因为 Docker 将监视一个进程。如果需要多个进程,则需要在顶层添加一个来处理其他进程。换句话说,您正在将一个精益简单的容器变成更复杂的东西。

我并不完全清楚为什么您需要在容器内使用进程管理器。

那么有人可以向我解释一下,在容器内安装进程管理器有什么好处?让 systemd 或 upstart 处理进程而不是向容器添加额外的服务不是更好吗?

Cri*_*itu 5

这就是在容器内使用 systemd(或 upstart 等)的整个想法。Docker 大部分时间用于为每个容器运行单个服务,因此对于复杂站点,您需要一个容器用于 Web 服务器,另一个用于数据库服务器。使用进程管理器,您可以在同一个容器中运行两者。

哪种方法更好是基于意见的。虽然从我所看到的,截至 2014 年 6 月,在 Docker 中运行 systemd 并不容易,例如存在错误#3629 -“在 docker arch 容器内运行 systemd 挂起或段错误”。有关更多详细信息,请参阅“在 Docker 容器中运行 systemd”