docker: no space left on device: unknow

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

docker: no space left on device: unknow_第1张图片

如图所示,占用空间最大的目录为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 存储使用建议

通用的存储使用建议如下:

  • 容器内的业务日志务必配置轮询覆写,或者使用日志驱动将日志输出到外部存储。避免日志文件持续增长,占用过高磁盘空间。
  • 结合外部监控对宿主机的磁盘空间使用情况进行监控和告警。

你可能感兴趣的:(工具软件,docker,容器,java)