docker客户端Java:如何保持实例运行?

我正在使用Java docker-client尝试与本地硬盘上的docker-image进行交互。

<dependency> <groupId>com.github.docker-java</groupId> <artifactId>docker-java</artifactId> <version>3.0.6</version> </dependency> 

我想加载一个图像,然后在同一个运行实例中执行几个命令。 我不明白如何保持开放。 似乎每一次执行都会创build一个新实例,这也意味着前一个实例的更改不再存在。 我不想保存更改的状态。 我打算将python代码部署到实例中,执行它并收到我写入STDOUT的结果。

我设法启动一个实例并在Ubuntu中执行“ls”,但是我不知道如何停留在同一个实例中并执行第二个命令?

这是我现在开始执行我的命令的方式。 我会很感激一个指针

  DockerClient dockerClient = DockerClientBuilder.getInstance(DefaultDockerClientConfig.createDefaultConfigBuilder() .withRegistryUrl("https://index.docker.io/v1/")) .withDockerCmdExecFactory(DockerClientBuilder.getDefaultDockerCmdExecFactory()) .build(); InspectImageResponse exec = dockerClient.inspectImageCmd(imageName).exec(); System.out.println(exec.getId() + " " + exec.getCreated()); CreateContainerResponse container = dockerClient.createContainerCmd(imageName).withCmd("ls") .withTty(false).exec(); System.out.println("CreateContainerResponse Id: " + container.getId()); dockerClient.startContainerCmd(container.getId()).exec(); AttachContainerTestCallback callback = new AttachContainerTestCallback(); dockerClient.attachContainerCmd(container.getId()).withStdErr(true).withStdOut(true).withFollowStream(true) .withLogs(true).exec(callback).awaitCompletion(); callback.close(); } public static class AttachContainerTestCallback extends AttachContainerResultCallback { private StringBuffer log = new StringBuffer(); @Override public void onNext(Frame item) { log.append(new String(item.getPayload())); System.out.println("["+new String(item.getPayload()).trim()+"]"); super.onNext(item); } @Override public RuntimeException getFirstError() { return super.getFirstError(); } @Override public String toString() { return log.toString(); } }