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

时间:2015-05-06 05:59:51

标签: java docker

我尝试从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输入模式“

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

1 个答案:

答案 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());