docker现在基本是程序员电脑上占用空间最大的软件了。动辄四五十GB。256的Mac book表示伤不起。

那我们接下来看看如何做一下清理,来一个清爽的docker。

知己知彼

我们先来看下docker占用的情况

docker system df




docker register清理 docker清理内存_docker register清理

这是清理后的效果



上图共有四个部分

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的痛了。

但是作为一个技术宅,干净的代码,干净的电脑才舒服。