从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输入模式“ 我不知道如何解决这

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

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

提到:

java进程未向docker CLI提供TTY,但您已通过在命令中指定
-t
请求TTY。
那么,图像真的需要TTY吗?如果没有,请不要指定
-t
。。。如果图像根本不需要stdin,也不要指定
-i

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

例如,请参见“”

而不是
Runtime.getRuntime().exec(“命令”)
do
Runtime.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标志获得输出的。