【发布时间】:2016-12-26 16:31:17
【问题描述】:
我正在尝试使用 docker-java 从 java 中使用 docker 远程 API,但我正在努力寻找一种方法来查看容器的执行何时完成:
CreateContainerResponse container = dockerClient.createContainerCmd("me/vw:v0.1")
.withVolumes(workingDIR)
.withBinds(new Bind("/localDrive", workingDIR))
.withCmd("vw", "/rcv1/rcv1.train.vw.gz", "--cache_file", "/rcv1/cache_train", "-f", "/rcv1/r_temp")
.withLogConfig(logconf)
.exec();
dockerClient.startContainerCmd((container.getId())).exec();
Thread.sleep(10000); //OBVIOUSLY BROKEN HACK IS BROKEN
System.out.println("PRINTING LOGS");
System.out.println(containerLog(container.getId(), dockerClient));
检查容器是否完成的正常方法是什么?我是否必须编写一些轮询 docker 服务器的东西,或者是否有一些方便的阻塞功能/调用? docker-java 的文档非常糟糕,我所做的大部分工作都是通过查看测试用例来完成的。
干杯,
尼克
【问题讨论】:
-
你到底想做什么?为什么你希望你的容器完成?
-
我正在尝试将自包含应用程序打包到 docker 映像中,以便可以像本地 unix 程序一样调用它们,但来自 java。这有意义吗?
-
嗯。我认为您需要让您的 docker 客户端库等待完成。 This example 调用
awaitCompletion看起来很有希望。 -
谢谢,这看起来像我要找的。
docker-java没有最好的文档,所以它需要一些时间来了解会发生什么......
标签: docker docker-java