3

在我们的 J2EE 项目中,我们想通过 docker-java 库调用sjourdan / ffmpeg 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添加它?

4

3 回答 3

2

根据this other StackOverflow question/answer--rmDocker API 不处理,所以我们对 docker-java 也没有运气。

因此,最后我们在执行后小心地删除容器,例如:

dockerClient.startContainerCmd(container.getId()).exec();
// do some stuff
dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();
于 2017-06-16T07:28:51.600 回答
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

至少从 v1.25 开始接受“自动删除”

于 2018-06-07T08:21:31.460 回答
1

对于当前版本,即3.2.8,您可以设置 autoremove 选项:

dockerClient.createContainerCmd(image).withHostConfig(new HostConfig().withAutoRemove(true)).exec()
于 2021-06-11T16:08:40.627 回答