Docker:清除所有停止的容器,除了数据容器

Docker: clean up all stopped containers except data-only containers

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

如何清理对应的图片?

一般来说,没有明确的方法可以将 data-only 与其他容器区分开来。如果你希望它们在你的清理中幸存下来,你可能可以设计一个特定的命名方案并有更复杂的脚本,这些脚本不会远程容器的名称,比如说,以 data-.

开头

也许你可以在所有纯数据容器的 docker run 命令中添加 a -e "type=data-only",然后根据此条件使用 grep 或 [=12] 进行过滤=] 例如,我用 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]

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

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

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

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

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

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