如何在Docker中“inheritance”启动进程?

我有一个基础的Docker镜像,Base,它包含一个我想运行的支持服务'helper'。 这个基地不打算直接使用。

如果我从Base创build另一个图像,有没有一种方法可以将“帮助”设置为在启动时自动运行,而不需要这个新图像的作者知道必须启动它。

例如,我知道我可以医生CMD开始'帮手'&&然后做任何作者想要的。 我正在寻找一种方法来封装开始的“帮手”,所以构build在Base之上的图像作者不必知道或者做任何事情。

可能?

你可以考虑使用一个基本的图像phusion/baseimage-docker ( 它总是启动 my_init脚本 , 照顾僵尸进程 )

在这个图像中,你可以定义多个程序(守护进程)来运行 :

你只需要编写一个运行你的守护进程的小shell脚本, runit就可以继续运行,并在崩溃时重新启动。

shell脚本必须被称为run ,必须是可执行的,并且将被放置在/etc/service/<NAME>

如果你的基本映像有一个/etc/service/helper/run脚本,那么基于它的任何映像都将运行helper ,以及你自己的任何其他的/etc/service/xxx/run脚本。