Py学习  »  docker

Docker修剪过去X小时内未使用的容器

Zelgadis • 5 年前 • 1452 次点击  

我想定期清理Docker之后,因为我使用它相当广泛,有很多未使用的图像/卷。

我知道存在的 docker system prune 命令,这几乎是我需要的。但是,我有几个容器按计划运行,几乎立即退出。它们是一些每小时/每天运行一次的维护脚本。如果我使用'standard'prune命令,它们将被删除,必须重新创建。我还发现了 until= 在这种情况下,过滤器是无用的,因为容器是几个月前创建的,但每天都在使用。

有没有什么方法可以告诉用户删除所有超过X小时的容器?例如,它可以删除最后一天没有使用的所有容器。

提前谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47228
 
1452 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Ijaz Ahmad Khan
Reply   •   1 楼
Ijaz Ahmad Khan    6 年前

最好的方法是使用容器编排器/调度器,而不是手动执行类似的操作。例如,可以使用kubernetes cron jobs。

https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

King Chung Huang
Reply   •   2 楼
King Chung Huang    6 年前

我想不出用prune命令做这件事的方法。但是,如何用JSON格式列出所有退出的容器,选择那些用JQ退出“天”或“月”的容器,然后删除它们?

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 .