进程从容器中的 Java 启动在哪里执行?

问题描述

我有一个 Java 应用程序。

我需要从此应用启动脚本。

如果我在终端中直接执行启动脚本的命令,就会得到想要的结果,比如:

root@host [ ~ ]# docker exec -it mycontainer bash
root [ /mycontainer ]# nsenter -t 1 -m -u -n -i sh /gg/my.sh -c telegraf -a status
status      #some custom output from the script
telegraf
**************
207

如果我从 Java 应用程序开始完全相同的事情,我不会得到正确的结果。 (结果就像我在容器内执行脚本一样。) Java代码

 String command = "nsenter -t 1 -m -u -n -i sh /gg/my.sh -a " + action + " -c " + name;
 Process ps = Runtime.getRuntime().exec(command);
...
log.info(psOutput)

日志:

not found
**************
not implemented.

完整上下文:

  • Java 应用程序位于 docker 容器中
  • 我需要在主机上运行脚本

是的,我知道......进程隔离和docker容器等等,有时你只需要从容器触发主机上一组命令的执行。 我在 this 之后触发了脚本从容器到主机的执行。

谁能给我解释一下为什么?当我从 Java 应用程序执行我的命令时到底发生了什么?为什么感觉从 Java 应用程序启动的进程有点像是包装在另一个进程中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)