猿问

如何删除旧的和未使用的码头形象

如何删除旧的和未使用的码头形象

在长时间运行码头时,系统中存在大量的图像。如何安全地同时删除所有未使用的Docker映像以释放存储空间?

此外,我还想删除几个月前提取的图像,这些图像具有正确的TAG.

所以,我不是要求只删除无标记的图像。我正在寻找一种方法来删除一般未使用的图像,其中包括未标记的图像和其他图像,比如几个月前使用正确的TAG.


呼唤远方
浏览 582回答 3
3回答

PIPIONE

码头1.13:Pr 26108和提交86de7c0引入一些新的命令,以帮助可视化对接守护进程数据在磁盘上占用的空间,并允许轻松清理“不必要”的多余空间。docker system prune将删除所有悬空数据(即:停止的容器、没有容器的卷和没有容器的图像)。甚至未使用的数据-a选择。你还拥有:docker container prunedocker image prunedocker network prunedocker volume prune为未用图像,使用docker image prune -a(用于移除悬挂物)和未经处理的图像)。警告:‘未用意思是“没有任何容器引用的图像”:在使用之前要小心-a.如上文所示阿升氏回答,&nbsp;docker system prune --all将移除所有未用图像不仅仅是悬空的.。这可能有点太过分了。结合docker xxx prune带着--filter期权是限制修剪的好方法(DockerSDKAPI 1.28最低,所以码头17.04+)目前支持的过滤器是:until (<timestamp>)-仅删除在给定时间戳之前创建的容器、图像和网络label&nbsp;(label=<key>,&nbsp;label=<key>=<value>,&nbsp;label!=<key>,或label!=<key>=<value>)-只使用(或)删除容器、图像、网络和卷。无,以防万一label!=...指定的标签。见“剪枝图像“举个例子。原答复(2016年9月)我通常会:docker&nbsp;rmi&nbsp;$(docker&nbsp;images&nbsp;--filter&nbsp;"dangling=true"&nbsp;-q&nbsp;--no-trunc)我有一个移除那些[悬空图像]的别名13:&nbsp;drmi这个dangling=true筛选器查找未使用的图像这样,不再被标记的图像引用的任何中间图像被删除。我也这么做第一为退出过程(集装箱)alias&nbsp;drmae='docker&nbsp;rm&nbsp;$(docker&nbsp;ps&nbsp;-qa&nbsp;--no-trunc&nbsp;--filter&nbsp;"status=exited")'如哈立兹指出在评论中:从技术上讲,在清理图像之前,您应该先清理容器,因为这样可以捕获更多的悬空图像和较少的错误。.杰斯·弗雷泽尔(Jfrazelle)有bashrc函数:dcleanup(){ &nbsp;&nbsp;&nbsp;&nbsp;docker&nbsp;rm&nbsp;-v&nbsp;$(docker&nbsp;ps&nbsp;--filter&nbsp;status=exited&nbsp;-q&nbsp;2>/dev/null)&nbsp;2>/dev/null &nbsp;&nbsp;&nbsp;&nbsp;docker&nbsp;rmi&nbsp;$(docker&nbsp;images&nbsp;--filter&nbsp;dangling=true&nbsp;-q&nbsp;2>/dev/null)&nbsp;2>/dev/null }要删除旧图像,而不仅仅是“未引用-悬挂”图像,您可以考虑docker-gc:一个简单的Docker容器和图像垃圾收集脚本。一个多小时前离开的容器被移除。删除后不属于任何剩余容器的图像。

侃侃无极

移除旧标记有一个多月历史的图片:$&nbsp;docker&nbsp;images&nbsp;--no-trunc&nbsp;--format&nbsp;'{{.ID}}&nbsp;{{.CreatedSince}}'&nbsp;\ &nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;grep&nbsp;'&nbsp;months'&nbsp;|&nbsp;awk&nbsp;'{&nbsp;print&nbsp;$1&nbsp;}'&nbsp;\ &nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;xargs&nbsp;--no-run-if-empty&nbsp;docker&nbsp;rmi注意它会失败若要删除存储库中引用的容器使用的图像,则需要依赖的子图像.这可能就是你想要的。否则只需添加-f旗子。例/etc/cron.daily/docker-gc剧本:#!/bin/sh&nbsp;-e #&nbsp;Delete&nbsp;all&nbsp;stopped&nbsp;containers&nbsp;(including&nbsp;data-only&nbsp;containers). docker&nbsp;ps&nbsp;-a&nbsp;-q&nbsp;--no-trunc&nbsp;--filter&nbsp;"status=exited"&nbsp;|&nbsp;xargs&nbsp;--no-run-if-empty&nbsp;docker&nbsp;rm&nbsp;-v #&nbsp;Delete&nbsp;all&nbsp;tagged&nbsp;images&nbsp;more&nbsp;than&nbsp;a&nbsp;month&nbsp;old #&nbsp;(will&nbsp;fail&nbsp;to&nbsp;remove&nbsp;images&nbsp;still&nbsp;used). docker&nbsp;images&nbsp;--no-trunc&nbsp;--format&nbsp;'{{.ID}}&nbsp;{{.CreatedSince}}'&nbsp;|&nbsp;grep&nbsp;'&nbsp;months'&nbsp;|&nbsp;awk&nbsp;'{&nbsp;print&nbsp;$1&nbsp;}'&nbsp;|&nbsp;xargs&nbsp;--no-run-if-empty&nbsp;docker&nbsp;rmi&nbsp;||&nbsp;true #&nbsp;Delete&nbsp;all&nbsp;'untagged/dangling'&nbsp;(<none>)&nbsp;images #&nbsp;Those&nbsp;are&nbsp;used&nbsp;for&nbsp;Docker&nbsp;caching&nbsp;mechanism. docker&nbsp;images&nbsp;-q&nbsp;--no-trunc&nbsp;--filter&nbsp;dangling=true&nbsp;|&nbsp;xargs&nbsp;--no-run-if-empty&nbsp;docker&nbsp;rmi #&nbsp;Delete&nbsp;all&nbsp;dangling&nbsp;volumes. docker&nbsp;volume&nbsp;ls&nbsp;-qf&nbsp;dangling=true&nbsp;|&nbsp;xargs&nbsp;--no-run-if-empty&nbsp;docker&nbsp;volume&nbsp;rm
随时随地看视频慕课网APP
我要回答