docker-javaを使用してjavaからdockerリモートAPIを使用しようとしていますが、コンテナの実行が完了した時刻を確認する方法を見つけるのに苦労しています:コンテナが終了するまでdocker-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-java
には本当に悪いドキュメントがあり、私が試したことのほとんどはテストケースを見ることによるものです。
乾杯、
ニック
あなたは正確に何をしようとしていますか?あなたのコンテナをなぜ仕上げたいのですか? – Matthew
私はローカルのUNIXプログラムであるかのように呼び出すことができるように、dockerイメージの内部に自己完結型アプリケーションをパッケージしようとしていますが、javaからです。これは理にかなっていますか? – XapaJIaMnu
Hmm。ドッカーのクライアントライブラリにcompletitonを待たせる必要があると思います。 [この例](https://github.com/docker-java/docker-java/blob/master/src/test/java/com/github/dockerjava/core/command/AttachContainerCmdImplTest.java)は 'awaitCompletion'を呼び出します。有望に見えます。 – Matthew