微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决进程从容器中的 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 举报,一经查实,本站将立刻删除。