1

像大多数 docker 用户一样,我需要定期连接到正在运行的容器并通过 bash 执行各种任意命令。

我正在使用带有 ubuntu 16.04 映像的 17.06-CE,据我所知,在不将 ssh 安装到容器中的情况下,唯一的方法是通过docker exec -it <container_name> bash

然而,正如有据可查的那样,对于您生成的每个 bash shell 进程,当您的连接中断时,您会留下一个僵尸进程。如果你经常连接到你的容器,你最终会得到 1000 个空闲的 shell——这是最不受欢迎的结果!

如何确保这些僵尸 shell 进程在断开连接时被杀死 - 因为它们会通过 ssh?

4

1 回答 1

0

一种方法是确保 linuxinit进程在您的容器中运行。在最新版本的 docker 中,有一个--init 选项可以docker run做到这一点。这使用tini运行init,也可以在以前的版本中使用。

另一种选择类似于phusion-baseimage 项目,它提供了具有此功能和许多其他功能的基本 docker 映像(可能是矫枉过正)。

于 2017-08-30T06:45:14.050 回答