社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

Zelgadis • 4 年前 • 707 次点击  

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

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

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

提前谢谢

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

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

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

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

我想不出用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 .