在我们的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添加它?
答案 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()