关于Exec Create API的问题


最近在调试remote API,对exec create 的表现感到困惑。
Map contaiterCmd = new HashMap();
contaiterCmd.put("AttachStdin", false);
contaiterCmd.put("AttachStdout", true);
contaiterCmd.put("AttachStderr", true);
contaiterCmd.put("Tty", true);
//停止
contaiterCmd.put("Cmd", new String[]{"/bin/bash", "-c", "/opt/system/tomcat7/bin/shutdown.sh"});
//启动
contaiterCmd.put("Cmd", new String[]{"/bin/bash", "-c", "/opt/system/tomcat7/bin/startup.sh"});

exec start 略。

问题来了,
我注意到docker.log里的日志:
[34mINFO[0m POST /exec/7592c1ee5fdef58fb9b142634b20b4e21d242480d736fce965a63b35ec4a3bde/start
[34mINFO[0m +job execStart(7592c1ee5fdef58fb9b142634b20b4e21d242480d736fce965a63b35ec4a3bde)
[34mINFO[0m +job log(exec_start: /bin/bash -c /opt/system/tomcat7/bin/startup.sh, 233078ae97a6838046ca133b107bd2aed3e6ad304174be6173682a6a425f459f, usell:latest)
[34mINFO[0m -job log(exec_start: /bin/bash -c /opt/system/tomcat7/bin/startup.sh, 233078ae97a6838046ca133b107bd2aed3e6ad304174be6173682a6a425f459f, usell:latest) = OK (0)
[34mINFO[0m -job execStart(7592c1ee5fdef58fb9b142634b20b4e21d242480d736fce965a63b35ec4a3bde) = OK (0)

停止的没有放上去,也是OK(0)

我进入容器,发现一个问题:
shutdown.sh执行后,tomcat不再侦听端口,但是 ps -ef|grep tomcat7还在,这不科学。多测试几次,有时候还是可以停掉的。
另外,我换成kill 的形式将进程杀掉,停止是没问题了。
startup.sh却没有将tomcat7启动起来。

上面启动和停止命令是分别执行的,docker日志,都是上述 OK(0)

请大神们不吝赐教。
已邀请:

萧遥吟 - 80后IT技术男

赞同来自:


初步判断是环境变量问题,运行脚本的时候没办法找到java这个命令的环境变量,你可以修改这个脚本,在运行中尝试打印java的环境变量一个文件。

jieyee

赞同来自:


多谢关注,参数里都加了contaiterCmd.put("Env", new String[]{"JAVA_HOME=/opt/system/jdk16/"});
也不行。在容器你执行相关的shell是可以执行成功的。

萧遥吟 - 80后IT技术男

赞同来自:


修改/opt/system/tomcat7/bin/startup.sh里的内容,把java或者其他程序都改为绝对路径试试。

要回复问题请先登录注册