Docker 深度清除镜像缓存 (overlay2)

13,403 阅读1分钟

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 

image.png

可以发现,存在大量使用 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

输出

image.png

我们看到,Build Cache 已被完全清除,达成目的。

后续优化策略:

  1. 运维可以将本条命令写入定时任务,比如每周清除一次,减轻磁盘压力。
  2. 可以使用 --filter 指定变量,定向清除对应 label 的镜像缓存,可以参考官方文档。

以上,如有遗漏,欢迎大家指正!