如何删除旧的和未使用的Docker映像
长时间运行Docker时,系统中有很多映像。如何安全地一次删除所有未使用的Docker映像以释放存储空间?
另外,我还想删除几个月前拉出的具有正确图像TAG
。
因此,我并不是要仅删除未标记的图像。我正在寻找一种删除常规未使用图像的方法,其中包括未标记的图像和其他图像,例如几个月前使用正确的图像拉出的图像TAG
。
回答:
2016年9月更新:Docker 1.13:PR
26108和commit
86de7c0引入了一些新命令,以帮助实现可视化docker守护程序数据在磁盘上占用了多少空间,并允许轻松清除“不需要的”多余空间。
将删除所有悬空数据(即,顺序:容器停止,无容器的卷和无容器的映像)。甚至带有-a
选项的未使用数据。
您还有:
docker container prune
docker image prune
docker network prune
docker volume prune
对于 未使用的 图像,请使用docker image prune -a
(用于删除悬空 和未 使用的图像)。
警告:“ 未使用 ”表示“没有任何容器引用的图像”:使用之前请小心-a
。
如AL的答案所示,dockersystem prune --all
将删除所有 未使用的 图像,而不仅仅是悬空的图像……这可能有点过多。
docker xxx
prune与该--filter
选项结合使用可能是一种限制修剪的好方法(docker
SDK API 1.28最低,因此docker 17.04+)
当前支持的过滤器是:
until (<timestamp>)
-仅删除在给定时间戳记之前创建的容器,图像和网络label
(label=<key>
,label=<key>=<value>
,label!=<key>
,或label!=<key>=<value>
) -仅与除去容器,图像,网络,和卷(或 没有 ,如果label!=...
被使用)指定的标签。
有关示例,请参见“ 修剪图像 ”。
原始答案(2016年9月)
我通常这样做:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
我有一个别名来删除那些[悬挂的图像]
13:drmi
该
dangling=true
过滤器发现未使用的图像
这样,将删除不再由标记图像引用的任何中间图像。
我
对退出的进程(容器)执行相同的操作
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
正如haridsv:
从技术上讲, 。
Jess
Frazelle(jfrazelle)具有bashrc函数:
dcleanup(){ docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
要删除旧图像,而不仅仅是“未引用悬挂”图像,可以考虑 :
一个简单的Docker容器和图像垃圾收集脚本。
- 一个多小时前退出的容器将被删除。
- 之后不属于任何剩余容器的图像将被删除。
以上是 如何删除旧的和未使用的Docker映像 的全部内容, 来源链接: utcz.com/qa/426849.html