2016年9月更新:Docker 1.13:
PR 26108
和
commit 86de7c0
docker system prune
将删除所有悬挂数据(即按顺序:容器已停止、没有容器的卷和没有容器的图像)。即使是未使用的数据
-a
你还有:
为了
未使用
图像,使用
docker image prune -a
(用于移除悬挂物
和
未使用的图像)。
未使用
意思是“没有被任何容器引用的图像”:在使用之前要小心
.
A L
的
answer
,
docker system prune --all
将全部删除
图片不仅仅是悬挂的。。。可能有点太多了。
结合
docker xxx prune
--filter
option
是限制修剪的好方法(
docker SDK API 1.28 minimum, so docker 17.04+
)
-
until (<timestamp>)
-仅删除在给定时间戳之前创建的容器、图像和网络
-
label
label=<key>
,
label=<key>=<value>
,
label!=<key>
label!=<key>=<value>
)-仅删除容器、图像、网络和卷
没有
,以防万一
label!=...
见“
Prune images
“举个例子。
原答案(2016年9月)
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
我有一个
alias for removing those [dangling images]
13
drmi
这个
dangling=true
过滤器查找未使用的图像
这样,任何不再被标记图像引用的中间图像都将被删除。
第一
对于
exited processes (containers)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
haridsv
指出
in the comments
从技术上讲,
您应该先清理容器,然后再清理图像,因为这将捕获更多的悬挂图像和更少的错误
Jess Frazelle (jfrazelle)
拥有
bashrc function
:
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容器和图像垃圾收集脚本。