Docker:清除除仅数据容器之外的所有已停止的容器

时间:2015-01-13 18:22:18

标签: docker

什么是Docker清理所有已停止的Docker容器但保留仅数据容器的方法?

  • docker rm $(docker ps -qa -f status=exited)也删除了这些!

如何清理相应图像?

3 个答案:

答案 0 :(得分:5)

一般来说,没有明确的方法可以将data-only与其他容器区分开来。如果你希望它们能够在你的清理中存活下来,你可以设计一个特定的名称方案,并且有更复杂的脚本,而不是带有名字的远程容器,比如从data-开始。

答案 1 :(得分:4)

关注Mykolas proposal我引入了一个命名约定,要求所有仅限数据的容器都以-data为后缀。

删除所有已停止的容器,但名为*-data的容器除外:

docker ps -a -f status=exited | grep -v '\-data *$'| awk '{if(NR>1) print $1}' | xargs -r docker rm

之后删除所有未使用的图片:

docker rmi $(docker images -qa -f dangling=true)

(保留仅数据容器使用的图像)

答案 2 :(得分:3)

您可以在所有仅数据容器的docker run命令中添加a -e "type=data-only",然后根据此条件进行过滤,使用grep或使用docker inspect例如,我使用sudo docker run -it -e type=data-only ubuntu bash root@f7e9ea4efbd9:/#启动容器,然后显示sudo docker inspect -f "{{ .Config.Env }}" f7e [type=data-only PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]