3

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非常に悪いドキュメントがあり、私が仕事をするために得たもののほとんどは、テストケースを見ることです。

乾杯、

ニック

4

3 に答える 3

4
dockerClient.startContainerCmd(createContainerResponse.getId()).exec();
WaitContainerResultCallback resultCallback = new WaitContainerResultCallback();
dockerClient.waitContainerCmd(createContainerResponse.getId()).exec(resultCallback);
resultCallback.awaitCompletion();
dockerClient.removeContainerCmd(createContainerResponse.getId()).exec();
于 2017-11-13T12:23:56.200 に答える
0

docker ソケットにアクセスできる場合は、リモート APIを使用できます。これは通常、完全な権限が必要なため、管理者にのみ使用されます。

于 2016-08-22T12:33:54.893 に答える