+-

我已经设置了一个Kippo服务器在docker容器中运行.一切都运行良好,直到你杀了容器.杀死容器(通过重新启动机器或通过docker kill)使其无法使用STDERR“另一个扭曲的服务器正在运行,PID 1”.我怎么解决这个问题?我没有问题重置容器的文件系统或类似的东西,因为我想要的一切都记录到数据库.非常感谢你
最佳答案
在Docker中,每个容器都在自己的PID名称空间中运行.这意味着dockerfile启动的进程将始终为PID 1,并且PID将从那里向上计数.
twistd期望PID是非确定性的,它可以通过简单地比较以查看PID是否相同来检查另一个twistd是否“已在运行”.因为在Docker中,PID总是为1,所以这个检查总是成功,而twistd认为它不应该启动.如果容器以非干净的方式退出,则twistd将无法清理其.pid文件,并且状态将保留在容器的文件系统中.
由于Docker守护程序将命名空间容器并阻止两个匹配的扭曲进程同时启动,因此.pid文件及其相关检查实际上并不实用,因此您应该禁用它.您可以通过更改命令行来禁用它,以在插件名称之前包含–pidfile =选项(完全相同,在“=”之后没有任何内容).我不熟悉Kippo,但对于扭曲的网络,这将被扭曲–pidfile = web.
我希望这个对你有用!
点击查看更多相关文章
转载注明原文:Docker中的PID 1持续存在 - 乐贴网