docker现在基本是程序员电脑上占用空间最大的软件了。动辄四五十GB。256的Mac book表示伤不起。
那我们接下来看看如何做一下清理,来一个清爽的docker。
知己知彼
我们先来看下docker占用的情况
docker system df
这是清理后的效果
上图共有四个部分
images:镜像部分
containers:容器部分
local volumes:本地卷部分
Build Cache:构建缓存部分
各个击破
1,镜像「image」
悬挂(dangling)镜像是未打标签或者未关联到容器的镜像,我们看下如何清理它们。
docker images -f dangling=true #查看所有悬挂镜像docker image prune #清理所有悬挂镜像docker image prune -a #清理所有未被目前存在容器所使用的所有镜像【这个比较彻底】docker image prune -f #-f取消提示,直接执行清理docker image prune -a --filter "until=24h" #--filter "until=24h",添加过滤条件
2,容器「container」
当你退出容器时,如果未使用--rm参数,该容器是不会删除的。该停止容器的可写层【writable layer】是会占用磁盘空间的。
docker container prune #清理停止容器docker container prune -f #取消提示,直接执行清理docker container prune --filter "until=24h" #添加清理条件,清理所有超过24H的已停止容器
3,数据卷「volume」
数据卷中包含我们的数据和文件,docker不会主动删除它们,所以它会占用我们空间。
docker volume prune #清理不被用到的数据卷docker volume prune -f #取消提示,直接执行清理docker volume prune --filter "label!=keep" #添加清理条件,清理所有没有keep标签的数据卷
4,网络「network」
网络配置不会占用太多空间,但是它会创建iptables规则,桥接网络设备【bridge network devices】和路由表规则。所以我们也可以清理掉不用的网络配置。
docker network prune #清理掉不被使用的网络配置docker network prune -f #取消提示,直接执行清理操作docker network prune --filter "until=24h" #添加清理条件
5,一键清理
docker提供了一个快捷方式,一键清理镜像,容器,网络。数据卷在docker版本17.06.1后,需要指定参数 --volumes ,之前是不需要的。
docker system prune #执行一键清理docker system prume -f #取消提示,直接执行清理操作docker system prune --volumes #docker 17.06.1版本之后,需要手动添加--volumes,才能清理数据卷。
清理结果
我的电脑,原来用了差不多60GB的空间,清理后,用掉40GB。好吧。作为升级了Mac pro16 500G的用户,已经没有256GB的痛了。
但是作为一个技术宅,干净的代码,干净的电脑才舒服。