我想在Docker之后定期清理,因为我使用它相当广泛,并且有很多未使用的镜像/卷。
我知道docker system prune
命令的存在,这几乎是我所需要的。但是,我有一些按计划运行的容器,几乎立即退出。它们是一些维护脚本,每小时/每天运行一次。如果我使用“标准”修剪命令,它们将被删除并且必须重新创建。我还发现until=
过滤器在这种情况下没有用,因为容器是几个月前创建的,但每天都会使用。
有没有办法告诉Docker删除X个小时以上退出的所有容器?例如,这可以删除前一天未使用的所有容器。
提前致谢
最佳答案
我想不出使用prune命令执行此操作的方法。但是,如何以json格式列出所有退出的容器,选择使用jq在“day”或“month”之前退出的容器,然后将其删除?
docker container ls -a --filter 'status=exited' --format '{{ json . }}' \
| jq --slurp --raw-output '.[] | select(.Status | contains("day") or contains("month")) | .ID' \
| xargs docker container rm
请注意,仅删除已退出的容器不会覆盖其他非运行状态的容器。可能的状态是
created
,restarting
,running
,removing
,paused
,exited
和dead
。
关于docker - 最近X个小时未使用的Docker修剪容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54389122/