如何自动删除 7 天前创建的 docker 镜像?
Posted
技术标签:
【中文标题】如何自动删除 7 天前创建的 docker 镜像?【英文标题】:How to remove docker images which created 7 days ago automatically? 【发布时间】:2018-11-17 02:56:49 【问题描述】:有没有办法删除几天前构建的 docker 镜像?
如果我们检查docker images
,将会得到:
REPOSITORY TAG IMAGE ID CREATED SIZE
存在一个CREATED
项目。
从official document搜索,没有找到那个选项。
【问题讨论】:
【参考方案1】:docker image prune 提供过滤器以在特定日期之前删除图像:
docker image prune -a --filter "until=$(date +'%Y-%m-%dT%H:%M:%S' --date='-15 days')"
【讨论】:
或者这样:docker images --filter=reference='myregistry/myrepo*' | grep "7 days ago" | awk 'print $3' | xargs docker image rm
@vv,上面的命令只会删除7 days
旧的图像。超过 7 天的图像仍然存在,因此此解决方案不是原始问题的答案。【参考方案2】:
您可以告诉 docker image prune 删除任何早于给定小时数的图像,在您的情况下:7 * 24h= 168h。
docker image prune -a --force --filter "until=168h"
使用 --force 选项,不会有任何提示,因此可以轻松地将其添加到 crontab 以每天运行。
为此,请在编辑模式 (crontab -e
) 下打开 crontab,并添加以下行以在每天凌晨 1 点运行此命令。
0 1 * * * docker image prune -a --force --filter "until=168h"
【讨论】:
虽然我喜欢 Docker 的过滤功能,但我很失望until
的逻辑否定不支持(例如,since
关键字)。 IMO 有点半途而废。
@will 对吗?人们一直在为一次性和探索性目的启动 docker 容器,并希望在此后不久将它们丢弃,但 docker 仍然假设 - 愚蠢的 IMO - 你总是想丢弃最旧的容器,或者只是你喜欢手动创建一个长列表要手动丢弃的 ID。【参考方案3】:
https://docs.docker.com/engine/reference/commandline/image_prune/
docker image prune -a --force --filter "until=240h"
【讨论】:
以上是关于如何自动删除 7 天前创建的 docker 镜像?的主要内容,如果未能解决你的问题,请参考以下文章