从java程序执行docker命令时出错

我试图从Java代码执行下面的docker命令:

command: ***docker exec -it reverent_hoover date*** 

(这里, reverente_hoover是容器名称。)

当我从Linux执行上述命令时,它给了我以下输出:

Wed May 6 05:19:28 UTC 2015

但是当我试图从Java代码执行它,它给了我这个错误:

时间=“2015-05-05T19:31:19 + 05:30”level =“fatal”msg =“无法在非ttyinput启用tty模式”

我不知道如何解决这个问题。

问题10734提到:

java进程没有为docker CLI提供TTY,但是通过在命令中指定-t来请求TTY。
那么,图像是否真的需要一个TTY? 如果没有,请不要指定-t …如果图像完全不需要标准input,也不要指定-i

如果它确实需要TTY,那么你需要为你的命令设置TTY,它应该工作。

例如,请参阅“ 用java持久化本地tty会话 ”

(而不是Runtime.getRuntime().exec("command");Runtime.getRuntime().exec("/bin/sh"); 并保持Process对象

使用Unix控制台程序的 “ Runtime.exec ”说明在使用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());