码头停止火花容器退出

时间:2016-04-07 07:25:37

标签: apache-spark docker daemon exit docker-compose

我知道docker只监听pid 1,如果pid退出(或变成守护进程),它会认为程序退出并且容器已关闭。

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

我不认为:while true; do sleep 1000;完成是一个合适的解决方案。

E.g。我用command: sbin/start-master.sh启动了主人。但它一直在关闭。

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

3 个答案:

答案 0 :(得分:1)

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

该图像中包含的my_init script将负责退出信号管理。

start-master.sh启动的流程仍在运行 同样,假设您从apache-spark开始构建phusion/baseimage-docker图片。

thaJeztah评论,使用现有图片也有效:gettyimages/spark/~/dockerfile/。它的默认CMD将使容器保持运行。

这两个选项比依赖tail -f技巧更清晰,后者无法优雅地处理终止/终止信号。

答案 1 :(得分:0)

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

如果您运行-it交互模式,这将使容器保持活动状态并提供有用信息。你可以运行-d分离,它将保持活力。

答案 2 :(得分:0)

这是另一种解决方案。 创建具有以下内容的文件An exception that occurs when a response returns an error code equal to or greater than 400.,并将其复制到spark conf目录中。

spark-env.sh

如果Dockerfile中的CMD如下所示:

SPARK_NO_DAEMONIZE=true

容器不会退出。