如何用 docker-java 播放 docker 运行 --rm?
How to play a docker run --rm with docker-java?
在我们的J2EE项目中,我们要调用sjourdan/ffmpeg docker through the docker-java库。
典型的 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添加?
根据 ,--rm
不由 Docker API 处理,所以我们没有运气 docker-java 要么。
所以,最后我们小心翼翼的在执行完之后把容器去掉,像这样:
dockerClient.startContainerCmd(container.getId()).exec();
// do some stuff
dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();
您可以将 "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
开始被接受
对于当前版本,即 3.2.8
,您可以设置自动删除选项:
dockerClient.createContainerCmd(image).withHostConfig(new HostConfig().withAutoRemove(true)).exec()
在我们的J2EE项目中,我们要调用sjourdan/ffmpeg docker through the docker-java库。
典型的 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添加?
根据 --rm
不由 Docker API 处理,所以我们没有运气 docker-java 要么。
所以,最后我们小心翼翼的在执行完之后把容器去掉,像这样:
dockerClient.startContainerCmd(container.getId()).exec();
// do some stuff
dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();
您可以将 "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
开始被接受对于当前版本,即 3.2.8
,您可以设置自动删除选项:
dockerClient.createContainerCmd(image).withHostConfig(new HostConfig().withAutoRemove(true)).exec()