[英]How to play a docker run --rm with docker-java?
在我們的 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添加它?
根據這個其他 StackOverflow 問題/答案,-- --rm
不是由 Docker API 處理的,所以我們也沒有使用 docker-java。
所以,最后我們在執行后小心地移除容器,比如:
dockerClient.startContainerCmd(container.getId()).exec();
// do some stuff
dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();
您可以向 docker API 發送“AutoRemove”值:
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 開始接受“AutoRemove”
對於當前版本3.2.8
,您可以使用以下命令設置 autoremove 選項:
dockerClient.createContainerCmd(image).withHostConfig(new HostConfig().withAutoRemove(true)).exec()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.