从java程序执行docker命令时出错
我试图从Java代码中执行以下docker命令:从java程序执行docker命令时出错,java,docker,Java,Docker,我试图从Java代码中执行以下docker命令: command: ***docker exec -it reverent_hoover date*** (这里,尊敬的胡佛是容器名称。) 当我从Linux执行上述命令时,它给了我以下输出: 2015年5月6日星期三05:19:28 UTC 但当我试图从Java代码执行它时,它给了我以下错误: time=“2015-05-05T19:31:19+05:30”level=“fatal”msg=“无法启用tty 非tty输入模式“ 我不知道如何解决这
command: ***docker exec -it reverent_hoover date***
(这里,尊敬的胡佛
是容器名称。)
当我从Linux执行上述命令时,它给了我以下输出:
2015年5月6日星期三05:19:28 UTC
但当我试图从Java代码执行它时,它给了我以下错误:
time=“2015-05-05T19:31:19+05:30”level=“fatal”msg=“无法启用tty
非tty输入模式“
我不知道如何解决这个问题。提到:
java进程未向docker CLI提供TTY,但您已通过在命令中指定-t
请求TTY。那么,图像真的需要TTY吗?如果没有,请不要指定
-t
。。。如果图像根本不需要stdin,也不要指定-i
如果它确实需要TTY,那么您需要为您的命令设置TTY,它应该可以工作
例如,请参见“”
而不是Runtime.getRuntime().exec(“命令”)
doRuntime.getRuntime().exec(“/bin/sh”)编码>并按住进程
对象
“”说明了在使用less
的上下文中:
Process p = Runtime.getRuntime().exec(new String[] {"sh", "-c",
"less >/dev/tty"});
OutputStream out = p.getOutputStream();
out.write("Lengthy message".getBytes());
out.close();
System.out.println("=> "+p.waitFor());
我只需要输出“Wed May 6 05:19:28 UTC 2015”。因此,我需要以何种格式给出命令。@KaviChinna我只是想解释tty部分。无论如何,我是通过从命令中删除-it标志获得输出的。