簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM