按图像名称停止docker容器,如果没有容器正在运行,则不会出错

时间:2016-05-12 09:04:41

标签: bash docker

这个question解释了如何停止从图像中启动Docker容器。

但如果没有正在运行的容器,我会收到错误 docker stop需要至少一个参数。这意味着我无法在长的.sh脚本中运行此命令而不会破坏它。

即使没有找到结果,如何更改这些命令?

@Bean public SimpleUrlHandlerMapping simpleURLHandlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setOrder(Integer.MAX_VALUE - 2);

Properties urlProperties = new Properties();
urlProperties.put("/welcome.htm", "welcomeController");

mapping.setMappings(urlProperties);
mapping.setInterceptors(new Object[]{ maintenanceInterceptor(), executeTimeInterceptor() });

return mapping; }

(我正在寻找一个纯粹的Docker答案,如果可能,而不是bash测试,因为我在ssh上运行我的脚本,所以我认为我无法访问正常的脚本测试)

1 个答案:

答案 0 :(得分:19)

我们可以帮助其他人:

使用特定图像停止容器:

docker ps -q --filter ancestor="imagename" | xargs -r docker stop

删除已退出的容器:

docker rm -v $(docker ps -a -q -f status=exited)

删除未使用的图片:

docker rmi $(docker images -f "dangling=true" -q)

如果您使用的是Docker> 1.9:

docker volume rm $(docker volume ls -qf dangling=true)

如果您使用的是Docker< = 1.9,请改用:

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes

Docker 1.13更新:

删除未使用的图片:

docker image prune

删除未使用的容器:

docker container prune

删除未使用的卷:

docker volume prune

删除未使用的网络:

docker network prune

删除所有未使用的组件:

docker system prune

重要提示:在生产中执行此操作之前,请确保您了解命令并备份重要数据。