Docker 深度清除镜像缓存
一般情况下,运维清理镜像是通过命令 docker rm i 删除镜像的。但是这条命令不会删除docker build命令产生的缓存文件。这个时候需要使用 docker system 的系列命令来做相关处理。
docker system --help
# 输出
Usage: docker system COMMAND
Manage Docker
Commands:
df Show docker disk usage
events Get real time events from the server
info Display system-wide information
prune Remove unused data
Run 'docker system COMMAND --help' for more information on a command.
操作流程
例如,我们先使用命令查看一下缓存情况:
docker system df
可以发现,存在大量使用 docker build 命令时产生的镜像缓存 (Build Cache) ,下面使用命令 prune 将其彻底清理。
docker system prune --help
# 输出
Flag shorthand -h has been deprecated, please use --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
--filter filter Provide filter values (e.g. 'label=<key>=<value>')
-f, --force Do not prompt for confirmation
--volumes Prune volumes
执行命令
docker system prune -a --force
对应 -a 删除全部未使用的镜像,-f 或 --force 不经过确认强行删除。
再检查一下缓存情况,使用命令
docker system df
输出
我们看到,Build Cache 已被完全清除,达成目的。
后续优化策略:
- 运维可以将本条命令写入定时任务,比如每周清除一次,减轻磁盘压力。
- 可以使用 --filter 指定变量,定向清除对应 label 的镜像缓存,可以参考官方文档。
以上,如有遗漏,欢迎大家指正!