什么是Docker清理所有已停止的Docker容器但保留仅数据容器的方法?
docker rm $(docker ps -qa -f status=exited)
也删除了这些!如何清理相应图像?
答案 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]