文章目录
  1. 1. 简介
  2. 2. 优化部署
  3. 3. 更新于2017-10-16

简介

我们的某个服务突然有一天,所有的测试环境全部执行失败,返回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命令来清理悬挂镜像,使用更方便。

1
docker image prune

通过增加-a参数,我们还可以清理全部没有使用的镜像。

1
docker image prune -a
文章目录
  1. 1. 简介
  2. 2. 优化部署
  3. 3. 更新于2017-10-16