[英]docker stop spark container from exiting
我知道 docker 只监听 pid 1,如果 pid 退出(或变成守护进程),它认为程序退出并且容器关闭。
当 apache-spark 启动时,./ ./start-master.sh
脚本如何保持容器运行?
我不认为: while true; do sleep 1000;
while true; do sleep 1000;
done 是一个合适的解决方案。
例如,我使用command: sbin/start-master.sh
来启动 master。 但它一直在关闭。
使用 docker-compose 启动时如何保持运行?
正如“在phusion/baseimage-docker
使用 Supervisor ”中提到的,您可以使用phusion/baseimage-docker
作为基础镜像,您可以在其中将脚本注册为“服务”。
该my_init
包含的my_init
脚本将负责退出信号管理。
由start-master.sh
启动的进程仍将运行。
同样,假设您正在从phusion/baseimage-docker
开始构建apache-spark
映像。
正如thaJeztah评论的那样,使用现有图像也可以: gettyimages/spark/~/dockerfile/
。 它的默认 CMD 将保持容器运行。
这两个选项都比依赖tail -f
技巧更干净,因为它不会优雅地处理 kill/exit 信号。
这是另一种解决方案。 使用以下内容创建一个文件spark-env.sh
并将其复制到 spark conf 目录中。
SPARK_NO_DAEMONIZE=true
如果 Dockerfile 中的 CMD 如下所示:
CMD ["/spark/sbin/start-master.sh"]
容器不会退出。
tail -f -n 50 /path/to/spark/logfile
如果您运行-it
交互模式,这将使容器保持活动状态并提供有用的信息。 您可以运行-d
detached 并且它会保持活动状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.