【发布时间】:2018-01-23 15:56:14
【问题描述】:
我的代码正在运行,但我无法使用该命令更改目录。我可以 ls、touch 等……但我不能 cd。
在这种情况下,message 是我想要的命令。例如:ls
对此有何修复?
public static String getDockerConsole(String containerName, String message) {
String[] cmd = new String[]{
"/bin/sh",
"-c",
message
};
DockerClient dockerClient = dockerClient();
Container container = getContainer(containerName);
ExecCreateCmdResponse execCreateCmdResponse = dockerClient.execCreateCmd(container.getId()).withAttachStdout(true).withTty(true).withAttachStderr(true).withCmd(cmd).withUser("root").exec();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream err = new ByteArrayOutputStream();
try {
dockerClient.execStartCmd(container.getId()).withExecId(execCreateCmdResponse.getId()).withTty(true).exec(new ExecStartResultCallback(out, err)).awaitCompletion();
} catch (InterruptedException e) {
e.printStackTrace();
}
return out.toString() + err.toString();
【问题讨论】:
-
更奇怪的是,如果我 cd 到一个不存在的目录,它会向我显示不存在的错误。
-
澄清一下,您正在尝试在 Docker 容器内运行的 Java 应用程序中
cd,但这不起作用?您遇到了什么错误? -
没有错误。如果我 ls /dirName,它会起作用。但我真正想要的是更改文件夹
-
您可以尝试链接命令,例如
message = "cd someDir && ls"吗? -
好的,我会检查的