目 录CONTENT

文章目录

解决docker占满磁盘问题

Seven
2021-09-15 / 0 评论 / 0 点赞 / 439 阅读 / 5137 字 / 正在检测是否收录...

在使用docker一段时间后突然出现某个容器进程挂掉,然后再去重新启动都会失败,这是可能需要看看是不是docker把磁盘占满了。下面详细介绍一下我遇到docker占满磁盘的一次经历。

某天上午测试突然反馈内网测试环境业务出现问题,功能不能正常使用,于是赶紧查看日志定位,发现是zookeeper连接异常了,zookeeper是使用docker部署,一般不会出现问题。

执行docker ps 命令发现 zookeeper已经挂掉了,然后执行 docker ps -a 查看zookeeper的容器id,接着执行docker start <zookeerper 容器id> ,发现zookeeper已经起不来了
2. 查看zookeeper的日志

在/var/lib/docker/containers目录下 感觉容器id找对应的log,根据error异常百度发现是磁盘满了

  1. 查看服务器的磁盘使用情况

    执行df命令

    [root@apollo containers]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/mapper/vg-root 15971232 12841532 2295348 100% /
    /dev/sda1 487634 195848 262090 43% /boot
    tmpfs 800900 0 800900 0% /run/user/0
    /dev/sdb 103080888 61464 97760160 1% /data2
    overlay 15971232 12841532 2295348 100%

/var/lib/docker/overlay2/7f45979e4ea63e8a4a8c8228c3177d33b26215462301fdccb4eb456e4d753c54/merged

所有的overlay 的Use% 都提示100% ,根目录/ 的Use%也提示100%,确实磁盘占满了

4.一层一层查看那个文件夹或文件占用磁盘最多
在根目录下执行命令
du -h --max-depth=1
一层一层查看,发现/var/lib/docker占用的磁盘空间最多

  1. 清理docker 占用的磁盘

经查看最大的文件夹有/var/lib/docker/volumes,/var/lib/docker/overlay2,/var/lib/docker/containers

containers中存放了所有的容器的日志,可以用容器的id找到对应的目录,如果容器已经停止或删除,可以直接删除对应的文件夹。

volumes,overlay2 占用的磁盘空间最多,很明显就是要删除这个两个目录下面的东西,但是这里对应的文件夹无法和容器id对应上来,所以不能随便删除。只能先使用docker的命令来删除。
先执行 docker system prune命令 ,发现清理出来一些空间了。
$ docker system prune
WARNING! This will remov

  • all stopped containers

  • all networks not used by at least one container

  • all dangling images

  • all build cache

    然后执行docker volume prune,删除没有使用的数据卷,但是还有很多的空间占用
    $ docker volume prune

    WARNING! This will remove all local volumes not used by at least one container.

    详细查看volume文件夹
    执行
    du -h --max-depth=1
    查看里面占用磁盘最多的一个文件夹

    打开进入一看,原来是数据库,原来根源是数据库占用将近一半的磁盘空间,于是清理了一下数据库,磁盘空间释放了一半出来了。

    详细查看overlay2 文件夹
    overlay2也占用了不少的空间,经过排除 一个容器可能会关联多个 overlay2 下面的目录,无从下手,放弃了。

最后记录几个有用的命令:

1.docker system df ----查看Docker占用分布

  1. docker stats ---可以查看docker容器的内存占用

docker stats ---- Display a live stream of container(s) resource usage statistics

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

5f10308a7d93 zookeeper 0.12% 68.73MiB / 7.79GiB 0.86% 1.5kB / 0B 5.97MB / 32.8kB 38

70062327fc72 apollo-portal 0.17% 402.8MiB / 7.79GiB 5.05% 5.5GB / 3.94GB 86.5MB / 24.6kB 53

808793d179ee apollo-admin 0.16% 442.1MiB / 7.79GiB 5.54% 18.1GB / 16.1GB 118MB / 24.6kB 59

7feade55a442 apollo-configser 1.16% 452.7MiB / 7.79GiB 5.68% 84.5GB / 53.6GB 158MB / 24.6kB 96

89f85b83a29b mysql 1.10% 659.9MiB / 7.79GiB 8.27% 77.4GB / 124GB 16.1GB / 2.31TB 178

CONTAINER ID and Name :the ID and name of the container

CPU % and MEM % :the percentage of the host’s CPU and memory the container is using

MEM USAGE / LIMIT:the total memory the container is using, and the total amount of memory it is allowed to use

NET I/O:The amount of data the container has sent and received over its network interface

BLOCK I/O:The amount of data the container has read to and written from block devices on the host

PIDs:the number of processes or threads the container has created

扩展资料:
https://docs.docker.com/engine/reference/commandline/stats/?spm=a2c6h.13066369.0.0.7c314e3c1ttce3

0

评论区