gpt4 book ai didi

java - 如何使用 Docker 在 Linux 中更改目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:30 25 4
gpt4 key购买 nike

我的代码可以正常工作,但我无法使用命令更改目录。我可以 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();

最佳答案

当执行 ExecCreateCmdResponse 并显示消息“cd folder”时,会创建一个连接到 tty 的进程,该进程会执行 sh 并对新文件夹进行更改,但它会终止。当它结束时,如果您再次运行,sh 将返回到主文件夹。

例如尝试在同一个命令 sh 进程中使用 cd 和 ls:

message = "cd /bin; ls ; cd /var; ls"

关于java - 如何使用 Docker 在 Linux 中更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com