当通过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项目,还有很多其他的(可能是矫枉过正)。