我想通过java执行这个命令
"docker ps -q | xargs docker Inspect --format '{{.HostConfig.NetworkMode}} {{ .Config.Image }} {{ .NetworkSettings.IPAddress }}'"
当我尝试通过 java 执行此命令时,我无法获得任何输出。 我没有收到任何错误或异常。
代码下方
String command ="docker ps -q | xargs docker inspect --format '{{.HostConfig.NetworkMode}} {{ .Config.Image }} {{ .NetworkSettings.IPAddress }}'";
process = Runtime.getRuntime().exec(command);
bufferedReaderObj = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((sLine = bufferedReaderObj.readLine()) != null) {
}
请帮助我,我认为这是因为命令中的大括号。
最佳答案
问题不在于命令中的花括号。 尝试使其作为 shell 脚本运行,而不是简单的命令。
Runtime.getRuntime()
检索当前的 Java 运行时环境。
使用 exec(String [] cmdArray) 方法,命令将传递给特定于操作系统的函数调用,这会创建特定于操作系统的进程或称为正在运行的程序。 shell 脚本是发出操作系统特定命令的方法,在本例中是 docker ps 和 dockerspect。
String[] cmd =
{"/bin/sh",
"-c",
"docker ps -q | xargs docker inspect --format '{{.HostConfig.NetworkMode}} {{ .Config.Image }} {{ .NetworkSettings.IPAddress }}'"};
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader bufferedReaderObj = new BufferedReader(new InputStreamReader(process.getInputStream()));
String sLine = "";
StringBuilder output = new StringBuilder();
while ((sLine = bufferedReaderObj.readLine()) != null) {
output.append(sLine);
}
System.out.println(output);
关于java - 无法通过java执行docker命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60436724/