从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());