解决Docker镜像爆满的问题
- - holmofy使用过docker的人都知道,在正常情况下. 我们使用multi-stage构建利用docker镜像缓存机制,可以加快构建速度. 但是缓存的镜像一多,没有及时释放磁盘空间,磁盘就容易爆满. 容量 已用 可用 已用% 挂载点. 如果每次构建完手动 docker rmi又达不到加快构建速度的效果.
使用过docker的人都知道,在正常情况下。我们使用multi-stage构建利用docker镜像缓存机制,可以加快构建速度。
但是缓存的镜像一多,没有及时释放磁盘空间,磁盘就容易爆满。
1 | [root@report ~]# df -h |
如果每次构建完手动 docker rmi
又达不到加快构建速度的效果。
尤其是在持续集成环境中,大家公用一个build machine的时候。大家各自打扫门前雪,更加不会有人care磁盘会不会被占满。
为了一劳永逸的解决这个问题,最好的办法莫过于通过定时任务来清理旧的image。 这个方法听起来高大上,用起来简单的很。 运行crontab -e命令编辑定时任务。
1 | crontab -e |
在打开的文本编辑器最后添加如下一行,然后保存退出。
1 | 0 1 * * * docker image prune -a --force --filter "until=48h" |
然后执行下面的命令使定时任务生效。
1 | systemctl restart crond.service |
其实,到这里,整个配置就结束了。接下来我们简单解释一下。
上面的定时任务是每天夜里1点钟删除2天(48h)之前的image。
具体的操作时间,具体的image保留时间,可以根据自己的情况修改。