0
点赞
收藏
分享

微信扫一扫

docker 没用镜像造成磁盘满问题

绪风 2022-10-02 阅读 219

查看磁盘的使用状态

df -a

docker 没用镜像造成磁盘满问题_f5

从上图可以看到,主要是docker overlay2 和dev/vda1下面的文件使用率过爆,对应的文件也可以看到。

首先,排查docker overlay2 下面的文件

docker 没用镜像造成磁盘满问题_f5_02

查看docker 的镜像和容器的占用情况

docker 没用镜像造成磁盘满问题_nginx_03

ps:清理的时候,有些镜像会在使用的情况。所以谨慎删除

docker 没用镜像造成磁盘满问题_docker_04


既然上面都清理完了,回过头看看docker 对应的文件和原理。方便后续排查问题。

docker存储驱动-overlay2

docker支持多种graphDriver,包括vfs、devicemapper、overlay、overlay2、aufs等等,其中最常用的就是aufs了,但随着linux内核3.18把overlay纳入其中。

docker默认的存储目录是​/var/lib/docker​

drwx------.  2 root root   24 Mar 28 07:13 builder
drwx------. 4 root root 92 Mar 28 07:13 buildkit
drwx------. 6 root root 4096 Mar 29 10:25 containers
drwx------. 3 root root 22 Mar 28 07:13 image
drwxr-x---. 3 root root 19 Mar 28 07:13 network
drwx------. 17 root root 4096 Mar 30 14:32 overlay2
drwx------. 4 root root 32 Mar 28 07:13 plugins
drwx------. 2 root root 6 Mar 30 14:32 runtimes
drwx------. 2 root root 6 Mar 28 07:13 swarm
drwx------. 2 root root 6 Mar 30 14:32 tmp
drwx------. 2 root root 6 Mar 28 07:13 trust
drwx------. 2 root root 25 Mar 28 07:13 volumes

先启动一个容器,在这里使用nginx作为实验

[root@10 docker]# docker run -d nginx
86b5733e54c7de5ef20cfb5574adedea6cbe11334517309badfbe7d313631310
[root@10 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86b5733e54c7 nginx "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 80/tcp practical_vaughan

打印/var/lib/docker/image

[root@10 image]# ll
total 0
drwx------. 5 root root 81 Mar 28 10:00 overlay2

我们只能看到overlay2这个目,docker会在​/var/lib/docker/image​目录下按每个存储驱动的名字创建一个目录,如这里的​overlay2​

用tree 命令看看overlay2 下面的文件目录:

[root@10 image]# tree -L 2 overlay2/
overlay2/
|-- distribution
| |-- diffid-by-digest
| `-- v2metadata-by-diffid
|-- imagedb
| |-- content
| `-- metadata
|-- layerdb
| |-- mounts
| |-- sha256
| `-- tmp
`-- repositories.json

这里的关键地方是​​imagedb​​​和​​layerdb​​目录,看这个目录名字,很明显就是专门用来存储元数据的地方,那为什么区分image和layer呢?因为在docker中,image是由多个layer组合而成的,换句话就是layer是一个共享的层,可能有多个image会指向某个layer。

进到/var/lib/docker/image/overlay2/imagedb/content/sha256 里面看看

oot@10 sha256]# ll
total 20
-rw-------. 1 root root 6025 Mar 28 09:01 2bcb04bdb83f7c5dc30f0edaca1609a716bda1c7d2244d4f5fbbdfef33da366c
-rw-------. 1 root root 1512 Mar 28 10:00 6d1ef012b5674ad8a127ecfa9b5e6f5178d171b90ee462846974177fd9bdd39f
-rw-------. 1 root root 1497 Mar 28 08:51 d8233ab899d419c58cf3634c0df54ff5d8acc28f8173f09c21df4a07229e1205
-rw-------. 1 root root 1686 Mar 28 10:00 eb426204290971fb3c7cfbf25e34308233b75080b6b3735ba5295056d915a998

第一行的26bcb04 就是niginx 的镜像哈希值


举报

相关推荐

0 条评论