教你如何清理 Docker 存储驱动的磁盘占用空间

2023-11-10

docker-ct

Author:rab


有时候你会发现,你的 Docker 业务容器虽然做了数据持久化,且数据持久化的磁盘空间占用并不大,但是 Docker 的 Overlay2 目录占用却很大。我们知道 Overlay2 是 Docker 的存储驱动,也是 Docker 默认的存储驱动,其实现了 Docker 的镜像层和容器层的分层存储技术。那为什么 Overlay2 磁盘空间占用较大呢?原因可能有以下几个方面:

  • 容器镜像层叠加

    Overlay2 存储驱动使用了层叠的方式来管理容器镜像。每个容器都有自己的镜像层,当多个容器使用相同的基础镜像时,它们会共享相同的底层镜像层。这种层叠的方式可以节省磁盘空间,但也会导致存储占用增加。

    怎么理解呢?因为每个容器的可写层会保存容器所做的所有更改,包括新增的文件和修改的文件。如果有多个容器使用相同的只读镜像层,那么每个容器的可写层都会保存一份相同的文件副本,从而增加了存储空间的占用。

  • 镜像更新和删除

    当容器镜像被更新或删除时,Overlay2 存储驱动会保留旧的镜像层,并创建新的镜像层。这样做是为了保证容器的可回滚性。然而,这也会导致存储占用增加,特别是在频繁更新或删除容器镜像时。

  • 存储驱动的限制

    Overlay2 存储驱动在某些情况下可能会受到存储驱动本身的限制,例如文件系统的最大文件数或最大文件大小。如果容器中的文件数量或文件大小超过了存储驱动的限制,那么存储占用可能会增加。

接下来列举一些实际生产中常用的无用数据清理方法,具体看以下案例。

1、清理无用的容器

使用以下命令删除已经停止的容器

如果后续确定已经不启动已经停止的容器了,则执行该命令

docker container prune

2、清理无用的镜像

docker image prune        # 删除Tag为<none>的镜像(强制删除-f)
docker image prune -a     # 删除未被任何容器使用的镜像(包括Tag为<none>的镜像)

3、清理无用的数据卷

使用以下命令删除未被任何容器使用的数据卷

docker volume prune

4、清理无用的网络

使用以下命令删除未被任何容器使用的网络:

docker network prune

5、清理无用的构建缓存

使用以下命令删除无用的构建缓存

docker builder prune

6、清理无用的存储驱动数据

使用以下命令清理存储驱动的临时数据

此操作会删除如下图中列举的所有数据项:

  • 所有已经停止的容器;
  • 所有未被任何容器使用的网络;
  • 所有未被任何容器使用的数据卷;
  • 所有悬空镜像(当多次构建时使用了相同镜像名与 Tag 名时就会产生);
  • 所有悬空镜像产生的构建缓存。
docker system prune --volumes   # 其实就是前5条指令的结合

image-20230918115049251

需要注意的时,执行上述命令将删除未使用的资源,包括容器、镜像、数据卷、网络和构建缓存。确保在执行这些命令之前,再次确认不再需要这些资源,并且已经备份了重要的数据。

—END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教你如何清理 Docker 存储驱动的磁盘占用空间 的相关文章

随机推荐

  • python 算法基础

    目录 基础算法 一元回归算法 多项式回归 预测 任意函数回归 分类算法 kNN k最邻近算法 聚类算法 k means DBSCAN 推荐算法 暂时不写 降维算法 数据预处理 主成分分析 PCA 因子分析 FactorAnalysis sk
  • 浅谈Web用户体验(一)

    最近一段时间在接触web用户体验 我认为 如果要鼓励用户去使用一个新的网站或软件 首先要做到的是 把用户需要完成的事的难度尽量降低 因为一般用户是没有耐性 有点懒的去做复杂的事的人 要解决这些问题 下面总结了一些方法 第一 尽量告诉用户需要
  • TightVNC H264编解码(二)之硬编码库的编译

    AVCodec codec avcodec find encoder by name nvenc h264 如果是默认的ffmpeg库 返回结果是NULL 看来是不带有硬编码功能的 重新编译分支ffnvcodec 不到半个小时编译完成 返回
  • Git 常用命令 --- git push命令

    git push的一般形式为 git push lt 远程主机名 gt lt 本地分支名 gt lt 远程分支名 gt 例如 git push origin master refs for master 即是将本地的master分支推送到远
  • golang配置国内镜像

    点击进入 golang中文网
  • elementUI图片遍历循环+预览【el-image查看大图+预览】

    我这边接受的数据结构 code 200 msg 图片列表 object id 1 partsName picturesName a jpg picturesUrl http 192 168 3 65 8111 image a jpg typ
  • POI向Excel中插入图片

    package com xiangyu bigdata xycom execl import java awt image BufferedImage import java io ByteArrayOutputStream import
  • flask-sqlalchemy 解决 with_for_update() 行锁不生效、数据滞后问题

    解决方案 我先把解决方案放在前面 后面慢慢阐明拖了我三天的研究过程和原因 若出现带锁的查询修改前 先行commit一次 model db session commit 先行commit一次 user models User query wi
  • Python-字符串str和json格式的转换

    我是精神抖擞王大鹏 不卑不亢 和蔼可亲 计算机硕士 目前小米大数据开发 日常会分享总结一些自己面试实际问题的回答 欢迎一起讨论 公众号 diting dapeng str转json str转换为json格式 前提一定需要保证这个str的格式
  • Building the kernel with clang

    https lwn net Articles 734071 https oschina net news 89194 linux build kernel with clang Building the kernel with clang
  • neo4j语法-where

    where语句无法单独使用 而是和match optional match start with一起使用 或者做为with和start的结果过滤器 基础使用 操作符 MATCH n WHERE n name Peter XOR n age
  • Matlab绘图案例,MATLAB画图大法,附详细代码

    目录 1 使用subplot创建多个子图 2 绘制误差棒图 3 绘制条形堆积图 4 绘制堆积面积图 5 绘制直方图并拟合曲线 6 绘制等高线图 7 绘制光滑的曲线 8 绘制彩虹图 9 绘制带有错误标记的散点图 10 绘制水平堆积条形 11
  • Syncthing 1.1.1 发布,文件持续同步应用

    百度智能云 云生态狂欢季 热门云产品1折起 gt gt gt Syncthing 1 1 1 发布了 Syncthing 是一款持续文件同步应用 可同步多台计算机之间的文件 此版本更新内容包括 5531 根据大小而不是条目刷新数据库 557
  • 莫烦---Tensorflow学习

    加粗样式边学边记录 感谢莫烦大神的教学视频 获益良多 之前已经看完了吴恩达Andrew Ng的视频 但对Tensorflow的使用还是有很多不懂的地方 还是要花些时间好好学学tensorflow和keras 莫烦大神的视频学习地址 Tens
  • css 动态生成动画代码在线工具,非常好用!推荐

    网址 Animista CSS Animations on Demand 这个网站提供了大量的css动画效果 用户可以自定义动画 在线生成动画代码
  • ChatGPT的代码生成是怎么做的?「基于深度学习的代码生成方法」最新研究进展...

    机器学习研究组 代码生成 Code Generation 是指根据自然语言描述生成相关代码片段的任务 在软件开发过程中 常 常会面临大量重复且技术含量较低的代码编写任务 代码生成作为最直接辅助开发人员完成编码的工作受到学术 界和工业界的广泛
  • mybatis框架学习(完整)

    目录 总结jdbc出现的问题 mybatis介绍 mybatis入门程序 占位符 与字符串拼接符 区别 mybatis框架的原理 别名配置与映射文件加载方式 mybatis与hibernate的比较 一 总结jdbc出现的问题 1 准备数据
  • 本机与服务器传输数据

    1 Xftp xftp传输的速度在500kb左右 对于上GB的数据集传输时显得太慢 技巧 可以先本地压缩后再上传 上传后在服务器端用unzip命令解压即可 警告 在使用Xftp传输文件时若与服务器不甚断连 当再次重连后一定要记得整个文件重新
  • 非阻塞的connect使用方式

    connect 函数的调用涉及到3次握手 默认connect函数为阻塞连接状态 通常connect 会阻塞到三次握手的完成和失败 而这个connect阻塞超时时间会依赖于系统 一般为75s到几分钟时间 一种方式可以通过该系统配置 proc
  • 教你如何清理 Docker 存储驱动的磁盘占用空间

    Author rab 有时候你会发现 你的 Docker 业务容器虽然做了数据持久化 且数据持久化的磁盘空间占用并不大 但是 Docker 的 Overlay2 目录占用却很大 我们知道 Overlay2 是 Docker 的存储驱动 也是