清理docker镜像

brief

本地出现none image是由于构建过程异常导致残存的image,占用空间,或者历史image

resolve

docker system

[root@jenkins-triad ~]# docker system --help
Usage:	docker system COMMAND
Manage Docker

Commands:
  df          Show docker disk usage   //show
  events      Get real time events from the server
  info        Display system-wide information
  prune       Remove unused data      //remove

Run 'docker system COMMAND --help' for more information on a command.
[root@jenkins-triad ~]# docker system prune --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

image

#docker image prune
[root@hot-master-k8s ~]# docker image prune --help
Usage:  docker image prune [OPTIONS]
Remove unused images
Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation


#docker images --filter
  dangling (boolean - true or false)  //none
  label (label=<key> or label=<key>=<value>)
  before (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created before given id or references
  since (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created since given id or references


docker rmi $(docker images -f 'dangling=true' -q)  //悬空镜像,构建中间过程的image
docker image prune -a -f --filter "until=2400h"   //清理过去3个月的历史镜像

practice

[root@jenkins-triad ~]# docker system df   //show image/container/volume
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              435                 2                   30.14GB             29.99GB (99%)
Containers          3                   0                   0B                  0B
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

docker system df -v   // show detail

不同状态的镜像

  • 已使用镜像(used image)指所有已被容器(包括已停止的)关联的镜像。即 docker ps -a 看到的所有容器使用的镜像。
  • 未引用镜像(unreferenced image)没有被分配或使用在容器中的镜像,但它有 Tag 信息
  • 悬空镜像(dangling image)未配置任何 Tag (也就无法被引用)的镜像,所以悬空。这通常是由于镜像 build 的时候没有指定 -t 参数配置 Tag 导致的
  • 挂起的卷(dangling Volume)类似的,dangling=true 的 Volume 表示没有被任何容器引用的卷。

docker system prune 自动清理:

该指令默认会清除所有如下资源:
已停止的容器(container)
未被任何容器所使用的卷(volume)
未被任何容器所关联的网络(network)
所有悬空镜像(image)。
该指令默认只会清除悬空镜像,未被使用的镜像不会被删除

添加-a 或 --all参数后,可以一并清除所有未使用的镜像和悬空镜像。
可以添加-f 或 --force参数用以忽略相关告警确认信息。
指令结尾处会显示总计清理释放的空间大小

删除未被任何容器关联的引用卷

docker volume rm $(docker volume ls -qf dangling=true)

删除已退出的容器

docker rm -v $(docker ps -qa -f status=exited)

删除状态为dead的容器

docker rm -v $(docker ps -qa -f status=dead)

posted @ 2023-06-10 16:49  mvpbang  阅读(63)  评论(0编辑  收藏  举报