3 回答
TA贡献1798条经验 获得超3个赞
码头1.13:Pr 26108和提交86de7c0引入一些新的命令,以帮助可视化对接守护进程数据在磁盘上占用的空间,并允许轻松清理“不必要”的多余空间。
docker system prune
将删除所有悬空数据(即:停止的容器、没有容器的卷和没有容器的图像)。甚至未使用的数据-a
选择。
你还拥有:
docker container prune
docker image prune
docker network prune
docker volume prune
为未用图像,使用docker image prune -a
(用于移除悬挂物)和未经处理的图像)。
警告:‘未用意思是“没有任何容器引用的图像”:在使用之前要小心-a
.
如上文所示阿升氏回答, docker system prune --all
将移除所有未用图像不仅仅是悬空的.。这可能有点太过分了。
结合docker xxx prune
带着--filter
期权是限制修剪的好方法(DockerSDKAPI 1.28最低,所以码头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")'
如哈立兹指出在评论中:
从技术上讲,在清理图像之前,您应该先清理容器,因为这样可以捕获更多的悬空图像和较少的错误。.
杰斯·弗雷泽尔(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-gc
:
一个简单的Docker容器和图像垃圾收集脚本。
- 一个多小时前离开的容器被移除。
- 删除后不属于任何剩余容器的图像。
- 3 回答
- 0 关注
- 475 浏览
添加回答
举报