gpt4 book ai didi

docker - 在 runit/daemontools 监督下运行 docker 进程是否合理

转载 作者:IT老高 更新时间:2023-10-28 21:39:58 24 4
gpt4 key购买 nike

我一直通过运行 docker 进程(应用程序)

docker 运行…

但在 runit 监督 下(runit 就像 daemontools) - 所以 runit 确保进程保持运行,传递信号等。

这合理吗? Docker 似乎想要运行自己的妖魔化——但它不像 runit 那样彻底。此外,当 runit 重新启动应用程序时 - 每次都会创建一个新容器(很好)但它会留下旧容器的痕迹 - 这似乎暗示我以错误的方式做这件事。

docker不应该这样运行吗?

我是否应该从镜像中设置一个容器,只需一次,然后让 runit 一直运行/监督该容器?

最佳答案

Docker 确实对守护程序容器进行了一些管理:如果系统关闭,那么当 Docker 守护程序启动时,它还会重新启动系统关闭时正在运行的所有容器。但是如果容器自行退出或者内核(或用户)在容器运行时杀死了容器,Docker 守护进程将不会重新启动它。如果您确实想要重新启动,则流程管理器很有意义。

我不知道runit所以无法给出具体的配置指导。但是您可能应该让进程管理器与 docker 守护进程通信并检查给定的容器 id 是否正在运行(docker ps | grep container_id 或等效的,或直接使用 Docker Remote API)。如果容器已停止,请使用 Docker 重新启动它(docker run container_id),而不是运行新容器。或者,如果您每次都想要一个新容器,则以 docker run -rm 开头,以便在它退出或停止时自动清理它。

如果您不希望您的流程管理器轮询 docker,您可以改为运行一些监视 docker 事件的东西。

您可以在启动容器时获取 container_id 作为启动守护进程的返回值,也可以让 Docker 将其写入文件(docker run -cidfile myfilename,如PID 文件)

我希望能帮助或帮助另一位 runit 大师提供更详细的建议。

关于docker - 在 runit/daemontools 监督下运行 docker 进程是否合理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com