1、查看 docker 的根目录
[root@node2 k8s]# docker info | grep -i "docker root dir"
WARNING: You're not using the default seccomp profile
Docker Root Dir: /var/lib/docker
2、查看目录剩余空间
df -hl /var/lib/docker
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 191G 191G 20K 100% /
$ cd /var/lib/docker
$ du -h --max-depth=1 |sort
0 ./plugins
0 ./runtimes
0 ./swarm
0 ./tmp
0 ./trust
136K ./containers
16K ./builder
24K ./volumes
352G .
352G ./overlay2 # 这个目录占用了非常高的磁盘磁盘空间
5.5M ./image
56K ./buildkit
792K ./network
1.首先进入到 /var/lib/docker/overlay2 目录下,查看谁占用的较多
[root@qak8s_node25 ~]# cd /var/lib/docker/overlay2/
[root@qak8s_node25 overlay2]# du -s ./* | sort -rn | more
如图所示,占用空间最大的目录为bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f
2.再通过目录名查找容器名
[root@qak8s_node25 overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f
1648, e5753a9541745e7a5aff85b2d0c2394f8d88d854aabe7a72b942fab81ff6f26f, /k8s_graceful_graceful-7b54cc8f66-9zb79_yce_bae9c98f-f329-4d30-848e-9bb8da14df25_0, /var/lib/docker/overlay2/bff25099a59b0fc8addd06f9223872f2904256f0432b3c3c47b58faef167115f/work
(1)分析 Docker 空间分布
Docker 的内置 CLI 指令 docker system df,可用于查询镜像(Images)、容器(Containers)和本地卷(Local Volumes)等空间使用大户的空间占用情况。 示例输出如下:
# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 13.32GB 12.42GB (93%)
Containers 1 1 -1B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
从上面可以看出,镜像占用的空间太多了,应该清楚无用镜像即可
(2)docker容器日志一般存放在/var/lib/docker下面,可使用如下命令查看各个日志的文件大小
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
cat /dev/null > *-json.log这是删除日志文件的格式
选择日志文件比较大或没有用的进行删除
Docker 存储使用建议
通用的存储使用建议如下:
- 容器内的业务日志务必配置轮询覆写,或者使用日志驱动将日志输出到外部存储。避免日志文件持续增长,占用过高磁盘空间。
- 结合外部监控对宿主机的磁盘空间使用情况进行监控和告警。