【发布时间】:2018-01-11 18:12:34
【问题描述】:
我需要开发一个只与 Docker Linux 客户端(不是 Docker 守护程序)对话的程序,而不是调用 Docker 远程 API。这是我的代码
try {
String[] command = {"docker", "run", "-it", "tomcat:9", "bash"};
ProcessBuilder pb = new ProcessBuilder(command);
pb.inheritIO();
Process proc = pb.start();
InputStream is = proc.getInputStream();
OutputStream os = proc.getOutputStream();
BufferedReader reader
= new BufferedReader(new InputStreamReader(is));
BufferedWriter writer
= new BufferedWriter(new OutputStreamWriter(os));
writer.write("pwd");
writer.flush();
String line = "";
while ((line = reader.readLine()) != null) {
System.out.print(line + "\n");
}
proc.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
我总是出错。 如果我使用“-it”,它会说“无法在非 tty 输入上启用 tty 模式”,如果我使用“-i”,我会得到一个 Stream Closed Exception。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
您应该使用 docker 远程 API 并使用它来创建/启动容器。见docs.docker.com/engine/reference/api/docker_remote_api。