官方文档
https://docs.docker.com/engine/reference/commandline/system_prune/
https://docs.docker.com/engine/reference/commandline/image_prune/
https://docs.docker.com/engine/reference/commandline/container_prune/
https://docs.docker.com/engine/reference/commandline/volume_prune/
https://docs.docker.com/engine/reference/commandline/network_prune/
查看docker使用磁盘的情况:
[root@prd-k8snode-11 docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLEImages
82 59 13.23GB 4.18GB (31%)Containers
170 119 55.98GB 9.96GB (17%)Local Volumes
23 2 646.8MB 594.6MB (91%)Build Cache
0 0 0B 0B
- 镜像占用了 13.23GB,可回收 4.18GB
- 容器占用了 55.98GB,可回收 9.96GB
- 本地数据卷占用 646.8MB,可回收 594.6MB
执行清理命令:
docker system prune
- 删除关闭的容器
- 删除无用的数据卷
- 删除无用的网络
- 删除dangling : 镜像
docker system prune -a
此命令清理更彻底,可多清理没有被容器使用的镜像。
遇到的问题
启用了 istio 的 k8s 集群会出现的问题:
执行以上命令后,会删除 istio-init 容器,由于此容器作为初始化容器,执行完毕后会处于关闭状态,如果删除会导致 pod 中的 istio-init 异常,所以执行删除时加上过滤器,根据标签过滤
解决方法
docker system prune --filter "label!=io.kubernetes.container.name=istio-init"
也可手动删除 dangling 镜像:
docker rmi -f $(docker image ls |grep none| awk '{print $3}')