docker - 最近X个小时未使用的Docker修剪容器

标签 docker

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

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

有没有办法告诉Docker删除X个小时以上退出的所有容器?例如,这可以删除前一天未使用的所有容器。

提前致谢

最佳答案

我想不出使用prune命令执行此操作的方法。但是,如何以json格式列出所有退出的容器,选择使用jq在“day”或“month”之前退出的容器,然后将其删除?

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

请注意,仅删除已退出的容器不会覆盖其他非运行状态的容器。可能的状态是createdrestartingrunningremovingpausedexiteddead

关于docker - 最近X个小时未使用的Docker修剪容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54389122/

相关文章:

docker - 如何通过某些 API 测量容器的启动和结束时间?

ruby-on-rails - docker 上的回形针无法上传图像?

amazon-web-services - 在Next.js中进行请求时,为什么会有不同的主机头?

c - 没有硬 float 的 ARM Docker 交叉编译

azure - Docker 与 Kubernetes 中的自托管网关

docker - 访问 docker 容器内的摄像头

docker - 在不同的 Docker 容器中运行 Celery 工作人员的 Airflow 设置?

postgresql - PostgreSQL-身份验证在Docker中失败

docker - 将 Docker 父主机 ip 插入到容器的 hosts 文件中

postgresql - 使用一个docker-compose.yml启动两个Wiki js容器,并通过traefik分离数据库(postgres)