Docker overlay2磁盘占用过高

这篇具有很好参考价值的文章主要介绍了Docker overlay2磁盘占用过高。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker overlay2磁盘占用过高主要有以下三个原因:
  1、容器日志文件过大,未作限制
  2、docker未用容器、镜像、缓存等过多
  3、docker默认路径存放不合理

一、磁盘容量查询

  通过以下两条命令可以定位磁盘占用过高原因,可根据查询结果做相应处置。

1、df -h 容量查询

[root@hostname ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   50G   35M 100% /
overlay          50G   50G   35M 100% /data/docker/overlay2/770abd1b64f51f05a0f7c5c71d7349f54c9c152c8f58263ea9dda4960a722d61/merged
overlay          50G   50G   35M 100% /data/docker/overlay2/19de54ababc18c2eb4c0d011434ac785480169a4e694c736dcbe938d497b5b3f/merged
overlay          50G   50G   35M 100% /data/docker/overlay2/78f613526719dd1eabd3fe1f383ca55f065182e538f81cb719dd53d01055e849/merged
overlay          50G   50G   35M 100% /data/docker/overlay2/a18694da44feba8f8379f422fdf67c00a1ac97efb281f8578770b7da4d55ad6a/merged

2、du -sh * 文件大小查询

#逐级排查大文件位置
[root@hostname ~]# du -sh /*
7.2G    /var
[root@hostname ~]# du -sh /var/*
37G     /opt/open
[root@hostname ~]# du -sh /var/lib/*
6.6G    /var/lib/docker

二、磁盘占用过高处理方法

1、日志文件清理

  docker容器运行时会产生大量日志,默认路径:/var/lib/docker/containers/id-json.log,随着容器运行该日志文件会占用大量磁盘空间。

1.1 日志清空
[root@test ~]# echo '' > 容器id-json.log

注:不要直接删除日志文件,否则可能会影响新日志产生。

1.2 限制日志文件大小

  以上方法只能暂时解决日志占用空间过大问题,如果想一劳永逸可修改docker配置文件,增加日志文件大小限制。

[root@test ~]# vi /etc/docker/daemon.json 
{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m",
        "max-file":"1"
    }
}
1.3 重启dokcer
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker

注:已存在的容器不会生效,需要重建该容器才可以使配置生效

2、历史数据清理

  Docker长时间运行,会产生大量无用的镜像、容器、网络等缓存信息,占用大量磁盘空间。此时我们可以使用prune命令清理。

2.1 释放所有未使用资源
[root@test ~]# docker system prune
WARNING! This will remove:
  - all stopped containers    //清理停止容器
  - all networks not used by at least one container  //清理未使用网络
  - all dangling images    //清理废弃镜像
  - all dangling build cache   //清理构建缓存

Are you sure you want to continue? [y/N] y
Deleted Containers:
7a7fdd019a89eb68325d45ee6821c3f6f9a0b68b5631a21665ec484d59c8a44a

Total reclaimed space: 202.4kB

注:数据清理前一定要检查是否还有需要使用的容器和镜像,避免误清理。

2.2 按需清理
[root@test ~]# docker image prune  //清理废弃镜像
[root@test ~]# docker container prune //清理停止容器
[root@test ~]# docker network prune   //清理未使用网络
[root@test ~]# docker system prune   //清理构建缓存

3、修改Docker运行路径

注:此方法需停止容器,迁移docker运行目录,请在业务空闲期,备份好数据后操作。
  Docker运行时使用的目录默认 “/var/lib/docker”,该目录占用根目录磁盘空间,根目录磁盘容量普遍较小。日常生成环境Linux常会挂载大容量数据盘,可以将Docker默认运行目录修改到数据盘。
修改Docker运行路径有两种方法:
  1、迁移/var/lib/docker数据,创建软连接。此种方法不需要改配置文件。
  2、迁移/var/lib/docker数据,修改docker配置文件。文章来源地址https://www.toymoban.com/news/detail-633252.html

3.1 迁移/var/lib/docker数据,创建软连接
#docker运行目录在/var/lib/docker下
[root@test ~]# df -h    
文件系统                 容量  已用  可用 已用% 挂载点
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
#停止所有容器,避免迁移时影响业务
[root@test ~]# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#将docker默认运行目录剪切到opt目录
[root@test ~]# mv /var/lib/docker /opt/
#查询是否已剪切完成
[root@test ~]# ls /opt/
containerd  docker  hio  rh
#新运行目录创建软连接
[root@test ~]# ln -s /opt/docker  /var/lib/docker
#重启docker服务
[root@test ~]# systemctl restart docker
#启动所有容器
[root@test ~]# docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#检查原镜像是否存在
[root@test ~]# docker images
#检查容器是否运行正常
[root@test ~]# docker ps 
#检查docker默认路径是否切换成功,已切换到/opt/docker下
[root@test ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
3.2 迁移/var/lib/docker数据,修改docker配置
#docker运行目录在/var/lib/docker下
[root@test ~]# df -h    
文件系统                 容量  已用  可用 已用% 挂载点
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay                   50G  5.8G   45G   12% /var/lib/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
#停止所有容器,避免迁移时影响业务
[root@test ~]# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#将docker默认运行目录剪切到opt目录
[root@test ~]# mv /var/lib/docker /opt/
#查询是否已剪切完成
[root@test ~]# ls /opt/
containerd  docker  hio  rh
#修改docker配置文件,添加 "data-root"路径
[root@test ~]# vi /etc/docker/daemon.json
{
   "data-root": "/opt/docker"
}
#重启docker服务
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker
#启动所有容器
[root@test ~]# docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#检查原镜像是否存在
[root@test ~]# docker images
#检查容器是否运行正常
[root@test ~]# docker ps 
#检查docker默认路径是否切换成功,已切换到/opt/docker下
[root@test ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay                   50G  5.8G   45G   12% /opt/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged

到了这里,关于Docker overlay2磁盘占用过高的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker磁盘空间爆满 通过overlay2 目录名查找对应容器

    看到占用磁盘空间最大的目录是docker存储根目录下的overlay2目录 再查看docker存储根目录下的overlay2目录下哪个目录占用空间最大 找出最大的这个overlay2目录的目录名是:ef129273a3f100feec4970bee90b0b83d9f1b170f6a76668eba9bdcfbf5f4ac8 下面需要使用这个目录名字符串去反向查找这个目录属于哪

    2024年02月16日
    浏览(51)
  • docker Overlay目录占用的磁盘空间过大

    今天遇到线上机器报警,排查后查到是docker的Overlay目录占用磁盘空间过大,记录一下解决办法。 Docker的Overlay目录是用于存储Docker容器的文件系统的。Overlay是一种联合文件系统,它能够将多个文件系统叠加在一起,形成一个只读的基础文件系统和一个可写的上层文件系统。在

    2024年02月06日
    浏览(44)
  • Docker下/var/lib/docker/overlay2空间清理

    Docker使用overlay2存储驱动来管理容器镜像和数据卷。如果不进行清理,overlay2会占用大量的磁盘空间。以下是/var/lib/docker/overlay2空间清理的步骤: 停止所有运行的Docker容器: 删除所有未使用的镜像: 删除未使用的Docker数据卷: 清理overlay2目录中未使用的文件。使用以下命令列

    2024年02月04日
    浏览(27)
  • 记录/var/lib/docker/overlay2/ 磁盘爆满的解决过程

      今天售后同事匆匆忙忙跑过来说:“客户那边的机器人挂掉了,app都运行不起来,可硬件都是正常的,我也不知道什么问题”,我心想:“我们机器人系统已经开发迭代好多年了,还会出现这种问题?”,没方法,还是借助我们开发好的远程工具排查吧,排查当然得从机器人

    2023年04月14日
    浏览(28)
  • Docker-Overlay2磁盘空间爆满清理方法

    在日常线上环境中,我们通常会来做利用Docker来做容器化管理,通过运行容器来执行任务等。但是,随着业务量的不断增大,容器的不断启动,往往会出现磁盘空间不足,1、第一种情况:是因为docker中部署的系统中日志内容的不断扩大。这种情况下,我们可手动,或定时任务

    2024年02月11日
    浏览(47)
  • docker overlay2 清理

    使用命令进行运行容器时,没对日志文件进行限制,随着时间的增长,日志文件越来越大,如果写日志比较频繁,文件超过100g也是很正常. 第一种,找到对应文件进行删除 进入docker 的containers目录:cd /var/lib/docker/containers 查看容器文件夹占用内存大小: du -sh * 如找到大文件夹,进入该

    2024年02月15日
    浏览(28)
  • Docker:overlay2浅析以及解决overlay2 文件过大的问题

    最近在学习docker的实现时看到这么一个概念:Union File System,先让我们来介绍介绍它。 定义:联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unit

    2024年02月07日
    浏览(33)
  • 如何清理 Docker 占用的磁盘空间

    Docker 很占用空间,每当我们运行容器、拉取镜像、部署应用、构建自己的镜像时,我们的磁盘空间会被大量占用。 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收。 docker 占用的空间可以通过下面的命令查看: TYPE  列出了docker 使

    2024年02月07日
    浏览(49)
  • docker overlay2 是存放什么的?

    docker overlay2是Docker中的存储驱动之一,用于管理镜像和容器层的数据。它使用最小存储空间来存储像层这样的临时数据。 overlay2本质上是多层存储驱动。它将镜像和容器层都视为独立的匿名临时文件系统。然后通过联合挂载将这些层组合成所需的最终文件系统。 overlay2使用两个

    2024年02月15日
    浏览(28)
  • Docker 深度清除镜像缓存 (overlay2)

    Docker 深度清除镜像缓存 (overlay2) 一般情况下,运维清理镜像是通过命令 docker rm i 删除镜像的。但是这条命令不会删除docker build命令产生的缓存文件。 这个时候需要使用 docker system 的系列命令来做相关处理。 输出: 参数: -a 删除全部未使用的镜像 -f 或 --force 不经过确认

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包