我有一个装有 GlassFish 的容器。 启动我的容器的命令是
/opt/glassfish4/glassfish/bin/asadmin start-domain --verbose
当我使用停止命令停止容器时,它停止并出现错误。它以代码 137 停止(它被 OOMKiller 销毁)。
3 秒前退出 (137)
我把stop命令的-t参数改成1000,结果还是一样——错误码137
当我运行命令时
docker exec -it ecai/opt/glassfish4/glassfish/bin/asadmin 停止域
容器在 2 秒内正常停止,代码为 0。
如何设置标准停止命令,使容器以代码 0 停止?
最佳答案
docker stop
向主进程发送一个 SIGTERM,等待一个宽限期(默认为 10 秒)让进程停止,如果进程没有自行关闭,它会发送一个 SIGKILL .
问题在于 Glassfish 在收到 SIGTERM 时突然终止。
解决此问题的方法是创建一个 shell 脚本作为 Glassfish 图像的入口点,您可以在其中管理接收到的信号。为此,您可以使用 trap
来执行如下操作。
#!/bin/bash
_term() {
/opt/glassfish4/glassfish/bin/asadmin stop-domain
}
trap _term SIGTERM
/opt/glassfish4/glassfish/bin/asadmin start-domain --verbose
希望这对您有所帮助,祝您好运!
关于docker 停止命令 GlassFish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539982/