我需要找到一种方法来跟踪程序P是否正在运行。我的程序在Ubuntu docker容器中,它是一个Java容器。我需要另一个程序来定期告诉我程序P正在运行。如果无法发送该消息,则必须重新启动程序。有没有办法找出这个?我们担心该程序或Docker容器可能会停止运行并影响用户体验。
答案 0 :(得分:1)
尽管如此,但问题很广泛,我将尝试提供一些解决方案。
首先,如果您的java
进程“失败”,则容器将终止工作。基于此,您只需执行docker ps
即可确定您的应用是否正在运行。
如果您想要一些手写的解决方案,则可以在应用程序中实现运行状况检查其余端点,并定期对其进行命中以确保该应用程序正在运行。
答案 1 :(得分:1)
您可以在Docker容器上设置重启策略,这样,如果java遇到异常并退出,它将自动尝试重启容器。
在docker run
命令中,只需添加--restart unless-stopped
,这样它将始终尝试重新启动,除非docker本身发送了stop命令。
有关此功能的更多信息,请参见: https://docs.docker.com/config/containers/start-containers-automatically/#restart-policy-details