如何使用docker-java玩docker run -rm?

时间:2017-06-12 15:15:37

标签: java docker ffmpeg docker-java

在我们的J2EE项目中,我们想通过sjourdan/ffmpeg库调用docker-java docker。

ffmpeg转换的典型调用类似于:

docker run --rm -v /e/data:/tmp/workdir sjourdan/ffmpeg -i /tmp/workdir/test.mov -f mp4 -vcodec libx264 -acodec aac /tmp/workdir/test.mp4

我们使用DockerClient.createContainerCmd()和右.with()方法管理了所有这些方法,但--rm参数除外。

有没有办法通过docker-java添加它?

3 个答案:

答案 0 :(得分:1)

根据this other StackOverflow question/answer--rm不是由Docker API处理的,所以我们也没有使用docker-java。

所以,最后我们在执行后小心地删除容器,如:

dockerClient.startContainerCmd(container.getId()).exec();
// do some stuff
dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();

答案 1 :(得分:1)

您可以将“AutoRemove”值发送到docker API:

String containerId = dockerClient.createContainerCmd(image).
    withHostConfig(new HostConfig() {
        @JsonProperty("AutoRemove")
        public boolean autoRemove = true;
    }).exec().getId();
dockerClient.startContainerCmd(containerId).exec();

就是这样

Docker API信息https://docs.docker.com/engine/api/v1.37/#operation/ContainerCreate

“AutoRemove”至少被接受,从v1.25开始

答案 2 :(得分:1)

对于当前版本,即 3.2.8,您可以设置自动删除选项:

dockerClient.createContainerCmd(image).withHostConfig(new HostConfig().withAutoRemove(true)).exec()