尝试在基于ubunty的VM上使用部署在Tomcat上的java服务的shell脚本以恶魔模式启动docker容器。
我有一个基于java的REST服务,它已部署在tomcat上,在已安装Docker的同一个VM上。我创建了一个shell文件来启动我的docker容器。从终端执行此shell文件时,它可以正常工作。虽然当我从java执行这个shell文件时它不会给出任何错误并且不会在shell文件中执行docker命令。
请注意我是否错过了一个观点,或者做错了什么。如果有人可以帮助我,那会很有意思。
Shell文件代码段。(用于测试当前已使用chmod 777向所有用户授予执行权限)
#!/bin/bash
echo First Parameter is $1
echo Second Parameter is $2
echo Third Parameter is $3
sudo docker run -d -e PARAM1=$1 -e PARAM2=$2 -e PARAM3=$3 --name=$1 <docker_iamge_name>
用于调用脚本文件的Java Codesnippet(请注意,这不是一个独立的java类,我在Tomcat上部署的基于Java的REST服务中使用此代码片段)
String command[];
command = new String[] {"/home/launcher/launcher_agent.sh","Param1","Param2", "Param3"};
Process process = Runtime.getRuntime().exec(command);
On在Tomcat sdtout日志中执行上述javascript获取以下内容
First Parameter is Param1
Second Parameter is Param2
Third Parameter is Param3
如果我检查了docker ps -a的帖子,我发现容器没有启动。
感谢您的回复。
答案 0 :(得分:0)
我认为您的问题是您尝试在sudo
中使用launcher_agent.sh
。
要了解生成的流程确实发生了什么,您需要同时阅读process.getInputStream()
和process.getErrorStream()
。最后一个将显示确切的错误(如果有的话)。
在你的情况下你应该得到类似的东西:
sudo:没有tty存在且没有指定askpass程序