【问题标题】:How to remove docker images which created 7 days ago automatically?如何自动删除 7 天前创建的 docker 镜像?
【发布时间】:2018-11-17 02:56:49
【问题描述】:

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

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

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE

存在一个CREATED 项目。

official document搜索,没有找到那个选项。

【问题讨论】:

    标签: image shell docker cron


    【解决方案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"

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 2022-11-30
      • 2014-02-19
      • 2022-12-26
      • 2019-08-31
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多