如何自动删除7天前创建的docker镜像?

v v*_*v v 14 shell cron image docker

有没有办法删除几天前构建的 docker 镜像?

如果我们检查docker images,将得到:

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
Run Code Online (Sandbox Code Playgroud)

存在一个CREATED项目。

官方文档研究,没有找到一个选项。

Ign*_*lán 25

docker image prune提供了一个过滤器来删除特定日期之前的图像:

docker image prune -a --filter "until=$(date +'%Y-%m-%dT%H:%M:%S' --date='-15 days')"
Run Code Online (Sandbox Code Playgroud)

  • @vv,上述命令只会删除“7 天”前的图像。超过 7 天的图像仍保留在那里,因此此解决方案不是原始问题的答案。 (4认同)

New*_*alp 14

您可以告诉 docker image prune 删除任何早于给定小时数的图像,在您的情况下:7 * 24h= 168h。

docker image prune -a --force --filter "until=168h"
Run Code Online (Sandbox Code Playgroud)

使用 --force 选项,不会有任何提示,因此可以轻松地将其添加到 crontab 中,以便每天运行。

为此,在编辑模式 ( crontab -e) 中打开 crontab并添加以下行以每天凌晨 1 点运行此命令。

0 1 * * * docker image prune -a --force --filter "until=168h"
Run Code Online (Sandbox Code Playgroud)

  • 虽然我喜欢 Docker 的过滤功能,但令我失望的是不支持 `until` 的逻辑否定(例如,`since` 关键字)。在我看来,有点半途而废。 (2认同)

hoj*_*jin 9

https://docs.docker.com/engine/reference/commandline/image_prune/

docker image prune -a --force --filter "until=240h"