简介
我们的某个服务突然有一天,所有的测试环境全部执行失败,返回500。结果到某台测试服务器上一看,磁盘空间满了!
最后发现是大量的历史版本Docker镜像未清理导致的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| noah-docker.host.huawei.com/noah-service/hunter <none> 8470735ac8e2 4 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> d88765ddc8fe 5 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 4aee0b83558a 6 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> add02e6af8f5 6 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 97eb4f2da485 6 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 95b8f4d92383 6 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> a2b51b2e138a 7 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 3b250877a8e1 7 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 3aa940434a99 7 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 68b1ec83803c 7 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 951db5450246 8 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 73b1750b31b9 8 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 13e7b553b4b7 8 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> 4ea2c3cdc7bc 8 weeks ago 1.121 GB noah-docker.host.huawei.com/noah-service/hunter <none> a5bc7cef75d0 8 weeks ago 1.121 GB
|
在网络上查询了之后,可以使用docker rmi $(docker images -q -f dangling=true)
命令来清理untagged镜像。执行之后清理出大概25G的空间。
1 2
| Filesystem Size Used Avail Use% Mounted on /dev/xvda2 36G 5.4G 29G 16% /
|
优化部署
由于测试版本的应用,版本号总是lastest
,因此每部署一次就留下了一个untagged镜像。所以我们把清理脚本加入部署阶段,部署最新版本之前先执行一次清理。
1 2 3
| echo "Clean old docker images" docker rm $(docker ps -a -q) docker rmi $(docker images -q -f dangling=true)
|
这样就能减少大量的untagged镜像,节省磁盘空间。
更新于2017-10-16
新版本Docker支持prune
命令来清理悬挂镜像,使用更方便。
通过增加-a
参数,我们还可以清理全部没有使用的镜像。