我尝试从Java代码执行以下docker命令:
command: ***docker exec -it reverent_hoover date***
(此处,reverente_hoover
是容器名称。)
当我从Linux执行上述命令时,它给了我以下输出:
Wed May 5 05:19:28 UTC 2015
但是当我尝试从Java代码执行它时,它给了我这个错误:
time =“2015-05-05T19:31:19 + 05:30”level =“fatal”msg =“无法启用tty 非tty输入模式“
我不知道如何解决这个问题。
答案 0 :(得分:0)
Issue 10734提及:
java进程未向docker CLI提供TTY,但您已通过在命令中指定
-t
来要求TTY。
那么,图像真的需要一个TTY吗?如果没有,请不要指定-t
...如果图像根本不需要stdin,也不要指定-i
。如果它确实需要TTY,那么你需要为你的命令设置TTY,它应该可以工作。
例如,请参阅“persistent local tty session with java”
而不是
Runtime.getRuntime().exec("command");
执行Runtime.getRuntime().exec("/bin/sh");
并坚持Process
对象
“Runtime.exec with Unix console programs”说明了在使用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());