我读过 docker 和PID 1 问题,现在我有点偏执。我根据官方的php-fpm 图像创建了自己的图像,并想知道是否应该运行 init 系统而不是 php-fpm 作为 PID 1。
我如何才能确定一个过程在信号和收获方面是否正常工作?检查文档没有回答这个问题。我可以安全地假设官方的、流行的 docker 镜像在这方面设计得很好吗?目前,由于我的不确定性,我只是倾向于使用docker 的内置 init 系统运行所有内容。
运行容器--init
是安全的,如果您完全担心此类问题,请继续执行。(如果您曾经在非纯 Docker 的上下文中运行容器,请注意Kubernetes 没有等效选项,您需要在映像中内置一个 init 进程。)
在这两种情况下,代码检查都可以帮助您确定是否存在潜在问题。你有没有启动过一个子流程?典型的 Docker 打包的 HTTP 服务没有。如果你不这样做,那么子进程永远不能启动孙子进程然后不清理它就退出,所以你永远不能继承一个意外的僵尸子进程。同样,如果您从不启动子进程,那么唯一可以向您发送信号的是您自己的代码和docker stop
,您可以轻松判断那里是否存在问题。
我详细查看的标准 Docker Hub 映像都没有运行 init 系统。Stack Overflow Docker 问题似乎很少包含有关docker stop
不工作或主机上进程泄漏的抱怨。我不会特别担心这一点,除非你有证据认为你有问题,或者如果你试图绝对检查每一个“这是一个好主意......”框。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句