igr*_*igr 4 docker docker-swarm
我们有一个系统,用户可以在其中安装一些docker容器.我们没有限制他可以安装的东西.一段时间后,我们需要清理 - 删除群中未使用的所有图像.
使用docker远程API的解决方案是什么?
我们的想法是拥有背景图像 - 垃圾收集器线程:
这有意义吗?这会以某种方式影响群体吗?
该命令docker rmi $(docker images -q)与@tpbowden的答案相同,但方式更清晰.该-q|--quiet只列出图像ID.
如果你这样做,当用户尝试swarm run deleted-image它时会:
一个有用的选择是--filter "dangling=true".执行swarm images -q --filter "dangling=true"将显示当前未运行的图像.
您的问题让我想起了计算机中的内存管理.你真正的问题是:
如何删除将来不会使用的图像?
这真的很难,真的取决于你的政策.如果您的策略是旧图像,则可以帮助的命令是:docker images --format='{{.CreatedSince}}:{{ .ID}}'.然后黑客开始......你可能需要grep "months"然后cut -d ':' -f 2.
整个命令将导致:
docker rmi $(docker images --format='{{.CreatedSince}}:{{ .ID}}' G months | cut -d ':' -f 2)
Run Code Online (Sandbox Code Playgroud)
请注意,此命令需要在每个Swarm代理以及Swarm管理器上运行,而不仅仅是 Swarm管理器.
请注意,swarm pull image:tag 不会在Swarm代理上提取图像!每个Swarm代理都必须自己提取图像.因此,删除仍然使用的图像将导致网络负载.
我希望这个答案有所帮助.此时没有任何意义可以查询" 自一个月以来未使用的图像 "AFAIK.
所有你需要的是'修剪'
$ docker image prune --filter until=72h --force --all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4280 次 |
| 最近记录: |