docker停止从退出火花容器

我知道docker只听pid 1,如果pid退出(或变成守护进程),它认为程序退出,容器closures。

当apache-spark启动时,./ ./start-master.sh脚本如何保持容器运行?

我不认为: while true; do sleep 1000; while true; do sleep 1000; 做是一个适当的解决scheme。

例如,我用command: sbin/start-master.sh启动主。 但是它一直在closures。

如何使用docker-compose启动时保持运行?

如“ 在 phusion/baseimage-docker 使用Supervisor ”所述,您可以使用phusion/baseimage-docker作为基础映像,在其中可以将脚本注册为“services”。

包含在该图像中的my_init脚本将负责退出信号pipe理。

start-master.sh启动的进程仍然在运行。
同样,假设您正在构build从phusion/baseimage-docker开始的apache-spark映像。

正如thaJeztah评论的那样 ,使用现有的图像也是如此: gettyimages/spark/~/dockerfile/ 。 它的默认CMD将保持容器运行。

这两个选项比依靠tail -f技巧更清洁,不会处理杀/退信号。

tail -f -n 50 /path/to/spark/logfile

这将保持容器活着,并且如果运行-it交互模式也提供有用的信息。 你可以运行-d分离,它会保持活着。