Python脚本仅在Docker中生成僵尸进程

Python脚本仅在Docker中生成僵尸进程,python,google-chrome,docker,zombie-process,luigi,Python,Google Chrome,Docker,Zombie Process,Luigi,我有一个相当复杂的设置 路易吉 及 但长话短说——在我本地的Ubuntu(17.10)桌面上,一切都很好,但当通过Docker compose(1.18.0)(配置版本3.3,这里有一些相关细节)在Docker(18.03.0-ce)中运行时,它会因python产生的僵尸chrome进程而膨胀 你知道为什么会发生这种情况,以及怎么处理吗 这似乎是因为python进程不应该是根级别的进程,而应该是进程树中最顶层的进程。它只是不能正确处理僵尸。因此,经过几个小时的努力,我最终得到了下一个丑陋的

我有一个相当复杂的设置

  • 路易吉
但长话短说——在我本地的Ubuntu(17.10)桌面上,一切都很好,但当通过Docker compose(1.18.0)(配置版本3.3,这里有一些相关细节)在Docker(18.03.0-ce)中运行时,它会因python产生的僵尸chrome进程而膨胀

你知道为什么会发生这种情况,以及怎么处理吗


这似乎是因为python进程不应该是根级别的进程,而应该是进程树中最顶层的进程。它只是不能正确处理僵尸。因此,经过几个小时的努力,我最终得到了下一个丑陋的docker compose配置条目:

entrypoint: /bin/bash -c
command: "(luigid) &"
其中
luigid
是一个python进程。这使得
bash
成为完美处理僵尸的根进程


如果知道一种更简单的方法,那就太好了。

尝试在容器中安装dumb init:(在alpine和debian中都可用)并将其用作入口点(更多阅读内容:)

你有没有想出解决方法?@AndyHayden嘿,是的-看看这个问题下面的两个答案。用bash包装python进程后,我的工作变得更好了,但仍然不够完美——有时仍然会遇到僵尸,但我没有时间尝试下面另一个答案中建议的
dumb init
,但我确实尝试了一下。如果你愿意-请在这里添加一条关于它是如何进行的评论!我觉得我的问题有点不同/不是僵尸chrome进程(这次),我认为是网络问题。很高兴发现这一点。实际上我已经有了一个调用python的bash脚本,但它使用的是“exec”,所以python变成了proc id 1。移除了执行官,僵尸也消失了