docker 阻止 spark 容器退出
docker stop spark container from exiting
我知道 docker 只监听 pid 1,如果 pid 退出(或变成守护进程),它认为程序退出并且容器关闭。
当 apache-spark 启动时,./start-master.sh
脚本如何保留容器 运行?
我不认为:while true; do sleep 1000;
done 是一个合适的解决方案。
例如我用command: sbin/start-master.sh
启动了master。但是一直关机。
如何在使用 docker-compose 开始时保持它 运行?
如“", you could use phusion/baseimage-docker
作为基础映像所述,您可以在其中将脚本注册为 "services"。
该图像中包含的 my_init
script 将负责退出信号管理。
并且 start-master.sh
启动的进程仍然是 运行。
同样,假设您正在从 phusion/baseimage-docker
.
开始构建 apache-spark
图像
正如 thaJeztah, using an existing image works too: gettyimages/spark/~/dockerfile/
评论的那样。它的默认 CMD 将保留容器 运行。
这两个选项都比依赖 tail -f
技巧更干净,后者不会优雅地处理 kill/exit 信号。
tail -f -n 50 /path/to/spark/logfile
这将使容器保持活动状态,并在您 运行 -it
交互模式下提供有用的信息。您可以 运行 -d
分离,它会保持活力。
这是另一种解决方案。
使用以下内容创建一个文件spark-env.sh
并将其复制到spark conf目录中。
SPARK_NO_DAEMONIZE=true
如果您在 Dockerfile 中的 CMD 如下所示:
CMD ["/spark/sbin/start-master.sh"]
容器不会退出。
我知道 docker 只监听 pid 1,如果 pid 退出(或变成守护进程),它认为程序退出并且容器关闭。
当 apache-spark 启动时,./start-master.sh
脚本如何保留容器 运行?
我不认为:while true; do sleep 1000;
done 是一个合适的解决方案。
例如我用command: sbin/start-master.sh
启动了master。但是一直关机。
如何在使用 docker-compose 开始时保持它 运行?
如“phusion/baseimage-docker
作为基础映像所述,您可以在其中将脚本注册为 "services"。
该图像中包含的 my_init
script 将负责退出信号管理。
并且 start-master.sh
启动的进程仍然是 运行。
同样,假设您正在从 phusion/baseimage-docker
.
apache-spark
图像
正如 thaJeztah, using an existing image works too: gettyimages/spark/~/dockerfile/
评论的那样。它的默认 CMD 将保留容器 运行。
这两个选项都比依赖 tail -f
技巧更干净,后者不会优雅地处理 kill/exit 信号。
tail -f -n 50 /path/to/spark/logfile
这将使容器保持活动状态,并在您 运行 -it
交互模式下提供有用的信息。您可以 运行 -d
分离,它会保持活力。
这是另一种解决方案。
使用以下内容创建一个文件spark-env.sh
并将其复制到spark conf目录中。
SPARK_NO_DAEMONIZE=true
如果您在 Dockerfile 中的 CMD 如下所示:
CMD ["/spark/sbin/start-master.sh"]
容器不会退出。