【发布时间】:2020-12-19 05:06:15
【问题描述】:
我是 Docker 新手,我正在尝试一个特定的场景,但我在网上或论坛上找不到任何解决方案。
我的设置细节是这样的,我在 Linux 上使用 Docker 17.12 和 compose 设置。我有一个包含 Java 进程的容器。作为一个程序功能,我们根据几个条件关闭正在运行的Java程序,以免进一步破坏我们程序的数据和一致性。一旦检测到 Java 程序出现故障,我们通过 docker stack deploy 手动将其启动。
Docker 中是否有任何可用的功能/信号/设置,一旦检测到在其中运行的 Java 程序已关闭,它将杀死容器(自毁或自 rm)?
【问题讨论】:
-
正常情况下是这样的:容器内的主进程退出,容器也退出。您是否有特定的设置以不同的方式工作?
-
您似乎没有使用 Docker 的 CMD 命令启动 JVM 进程...我们在某些场景中这样做,我们需要在启动 java 进程之前进行一些预工作...即我们开始bash脚本依次启动java作为子进程......如果你遵循类似的方法,那么我们使用bash的trap函数从容器中找到kill信号并通知JVM..同样我们保持一个while循环来检查jvm pid活动并退出bash 让容器关闭...
标签: java docker docker-compose jvm