当通过bash连接到容器时避免docker exec zombie进程
像大多数docker工人一样,我需要定期连接到一个正在运行的容器,并通过bash执行各种任意的命令。
我使用17.06-CE与一个Ubuntu的16.04图像,据我所知,唯一的方法做到这一点,而无需安装SSH到容器是通过docker exec -it <container_name> bash
但是, 正如已经详细logging的那样 ,对于您生成的每个bash shell进程,您在连接中断时都会留下僵尸进程。 如果你经常连接到你的容器,你最终会有1000个空闲的贝壳 – 一个最不希望的结果!
我怎样才能确保这些僵尸shell进程在断开连接时死亡 – 他们将通过SSH?
一种方法是确保linux init
进程在你的容器中运行。 在--init
最新版本中有一个--init
docker run
的--init
选项 ,应该这样做。 这使用tini来运行也可以在以前的版本中使用的init
。
另一个选项就像是提供了一个基本的docker镜像的phusion-baseimage项目,还有很多其他的(可能是矫枉过正)。