清理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)