当前位置: 首页 > article >正文

Docker Desktop 磁盘空间占用过大?手把手教你彻底瘦身

前言很多使用 Docker Desktop for Windows 的同学都会遇到一个头疼的问题明明没有拉取多少镜像Docker 却占用了几十甚至上百 GB 的磁盘空间。更让人困惑的是执行了docker system prune清理命令后磁盘空间完全没有变化仿佛那些被删除的空间凭空消失了。本文将从原理到实践详细解释这个问题的成因并提供一套切实可行的磁盘瘦身方案。一、现象描述这是一个非常典型的场景Docker Desktop 安装在 Windows 系统上使用 WSL 2 后端Docker 实际数据目录位于 D 盘例如D:\Docker\WSL\disk\执行docker system prune -a --volumes清理后提示释放了约 20GB 空间但查看 D 盘剩余空间发现完全没有变化出现这种现象不是清理命令没生效而是 Docker 磁盘文件的“只增不减”机制导致的。二、根本原因WSL 2 虚拟磁盘的伸缩特性Docker Desktop on Windows 默认使用WSL 2作为后端。在这种架构下所有 Docker 数据镜像、容器、卷、缓存等并不是直接存放在 Windows 文件系统中而是存储在一个虚拟硬盘文件中通常名为ext4.vhdx或docker_data.vhdx。这个虚拟磁盘文件的行为特点是自动增长当 Docker 写入新数据时.vhdx文件会按需自动扩大不会自动收缩当 Docker 内部删除数据后.vhdx文件不会自动缩小原本占用的硬盘空间并不会归还给 Windows打个比方这个.vhdx文件就像一个巨大的仓库。你可以往里搬货写入数据也可以搬走货物docker prune删除数据。但仓库的墙壁是铁皮做的货物搬走了铁皮墙壁并不会自动缩回去。这就是为什么你删除了 20GB 的 Docker 数据D 盘的剩余空间却没有变化的根本原因。三、解决方案对虚拟磁盘执行压缩Compact既然虚拟磁盘不会自动收缩我们需要手动对.vhdx文件执行一次压缩Compact操作。压缩的本质是将文件内部已标记为“空闲”的空间释放出来让文件体积真正变小。3.1 准备工作关闭 Docker Desktop右键系统托盘图标 → Quit Docker Desktop以管理员身份运行PowerShell3.2 关闭 WSL 后端执行以下命令彻底关闭所有正在运行的 WSL 子系统wsl--shutdown这一步非常重要只有确保虚拟磁盘没有被任何进程占用才能安全地进行压缩。3.3 找到虚拟磁盘文件典型的虚拟磁盘文件位置如下取决于你的 Docker 数据存放路径D:\Docker\WSL\disk\docker_data.vhdx如果无法确定具体位置可以在 PowerShell 中搜索Get-ChildItem-Path D:\-Filter*.vhdx-Recurse-ErrorAction SilentlyContinue|Select-ObjectFullName,{nSizeGB;e{[math]::Round($_.Length/1GB,2)}}3.4 执行压缩两种方式任选其一方式一纯命令行一键压缩推荐 select vdisk fileD:\Docker\WSL\disk\docker_data.vhdx attach vdisk readonly compact vdisk detach vdisk exit |diskpart请将路径替换为你的实际.vhdx文件路径。方式二交互式手动操作依次执行以下命令diskpart进入DISKPART提示符后逐行输入select vdisk fileD:\Docker\WSL\disk\docker_data.vhdx attach vdisk readonly compact vdisk detach vdisk exit3.5 观察压缩过程执行compact vdisk后会看到类似输出29 百分比已完成 ... 100 百分比已完成 DiskPart 已成功压缩虚拟磁盘文件。压缩过程通常需要520 分钟取决于文件大小和磁盘性能期间请耐心等待不要关闭窗口3.6 验证结果压缩完成后在资源管理器中再次查看.vhdx文件的大小压缩前比如 70GB压缩后比如 20GB此时D 盘的剩余空间会明显增加那 20GB 空间终于真正归还给了 Windows。四、进阶彻底迁移 Docker 数据到其他盘如果你的系统盘C 盘空间紧张或者希望根治磁盘膨胀问题可以将整个 Docker 数据目录迁移到其他容量更大的硬盘。4.1 查看现有 WSL 子系统wsl--list典型输出docker-desktop docker-desktop-datadocker-desktopDocker 的客户端和服务端组件docker-desktop-data存储镜像、容器、卷等核心数据这是迁移的关键4.2 执行迁移假设目标目录为D:\WSL\docker# 关闭子系统wsl-t docker-desktop-data# 导出数据到 tar 文件wsl--export docker-desktop-dataD:\WSL\docker\docker-desktop-data.tar# 注销原子系统wsl--unregister docker-desktop-data# 导入到新位置wsl--import docker-desktop-dataD:\WSL\docker\docker-desktop-dataD:\WSL\docker\docker-desktop-data.tar--version 2迁移完成后重启 Docker Desktop即会自动使用新位置。五、日常维护建议为了避免磁盘膨胀问题反复出现建议养成以下维护习惯。5.1 定期清理命令清理目标命令说明悬空镜像docker image prune删除旧镜像残留none:none停止的容器docker container prune清理已退出的容器未使用的卷docker volume prune删除未被任何容器引用的数据卷构建缓存docker builder prune一键清理docker build产生的缓存一键大扫除docker system prune -a --volumes清理所有未使用的资源镜像、容器、网络、卷建议每月执行一次docker system prune -a --volumes并在执行后对.vhdx文件进行一次压缩。5.2 日志大小限制一劳永逸容器日志无限增长是导致磁盘膨胀的常见原因之一。通过配置日志驱动选项可以从源头限制每个容器的日志大小。配置步骤打开 Docker Desktop进入Settings→Docker Engine在 JSON 配置中添加log-opts配置项{log-driver:json-file,log-opts:{max-size:10m,max-file:3}}参数说明参数说明推荐值max-size单个日志文件最大大小10m或50mmax-file最多保留的日志文件数量3或5配置完成后点击Apply Restart使配置生效。⚠️注意此配置仅对新创建的容器生效。对于已存在的容器需要删除并重新创建才能应用日志限制。5.3 维护清单总结频率操作命令/方式每周清理悬空镜像和停止的容器docker system prune每月深度清理所有未使用资源docker system prune -a --volumes每月压缩虚拟磁盘文件compact vdisk通过 diskpart一次性配置容器日志大小限制Docker Engine 配置log-opts一次性迁移 Docker 数据到其他盘wsl --export--import六、常见问题 FAQQ1压缩后效果不明显怎么办如果压缩后.vhdx文件只缩小了一点点说明 Docker 内部确实还有大量数据。可以执行更彻底的清理docker system prune-a--volumes然后再次重复压缩操作。Q2压缩过程中可以中断吗不建议中断。如果强制关闭窗口或终止进程可能导致虚拟磁盘文件损坏。如果确实需要中断请等待当前步骤完成后再操作。Q332 位系统能使用这些方法吗不能。Docker Desktop on Windows 要求 64 位系统且需要启用 WSL 2 或 Hyper-V。Q4为什么我的.vhdx文件在 C 盘而不是 D 盘这是默认安装位置。你可以按照第四章的方法迁移到其他盘。七、总结Docker Desktop on Windows 磁盘占用过大问题的本质是 WSL 2 虚拟磁盘“只增不减”的特性。解决思路分为三个层次清理使用docker system prune删除 Docker 内部无用数据压缩通过diskpart的compact vdisk命令让虚拟磁盘真正缩小预防配置日志大小限制 定期维护 必要时迁移到更大容量的硬盘掌握这套方法你就可以彻底告别 Docker“吞食”硬盘空间的困扰。

相关文章:

Docker Desktop 磁盘空间占用过大?手把手教你彻底瘦身

前言 很多使用 Docker Desktop for Windows 的同学都会遇到一个头疼的问题:明明没有拉取多少镜像,Docker 却占用了几十甚至上百 GB 的磁盘空间。更让人困惑的是,执行了 docker system prune 清理命令后,磁盘空间完全没有变化&…...

AC鸭的迷宫按钮

题目描述AC鸭来到一个迷宫里,迷宫有 n 行 m 列。迷宫中有五种字符:A 表示 AC鸭一开始的位置。B 表示出口的位置。. 表示可以经过的空地。# 表示一开始不能经过的墙。K 表示按钮。AC鸭每一步可以向上、下、左、右四个方向移动一格,不能走出迷宫…...

终极歌词获取方案:163MusicLyrics让你轻松获取网易云和QQ音乐LRC歌词

终极歌词获取方案:163MusicLyrics让你轻松获取网易云和QQ音乐LRC歌词 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为寻找准确歌词而烦恼吗&#xff1f…...

Tabletop Simulator备份神器:3分钟学会永久保存你的桌游资产

Tabletop Simulator备份神器:3分钟学会永久保存你的桌游资产 【免费下载链接】tts-backup Backup Tabletop Simulator saves and assets into comprehensive Zip files. 项目地址: https://gitcode.com/gh_mirrors/tt/tts-backup 还在担心辛苦创建的Tabletop…...

论文AI率太高怎么救?答辩前1周降AI率完整攻略+不延期方案!

论文AI率太高怎么救?答辩前1周降AI率完整攻略不延期方案! 导师周一通知答辩、周五查出来知网 AIGC 检测 67%——这种倒计时场景每年 3-5 月毕业季都会上演几千次。 这种场景下选工具,最关键的不是「单价便宜」是「降不下来怎么办」。1 周时间…...

别再让专利证书变废纸!手把手教你用6步法写出能维权的权利要求书

从技术到法律:6步打造高价值专利权利要求的实战指南 刚拿到专利证书的工程师小王,在展会上发现竞争对手的产品几乎照搬了自己的发明。他信心满满地提起诉讼,却因权利要求书中"数据传输模块"的表述过于宽泛而败诉——法院认为该描述…...

别再死记硬背CTL公式了!用UPPAAL模拟器手把手带你理解A[]和E<>的区别

别再死记硬背CTL公式了&#xff01;用UPPAAL模拟器手把手带你理解A[]和E<>的区别 刚接触形式化验证工具UPPAAL时&#xff0c;最令人头疼的莫过于那些晦涩难懂的CTL&#xff08;计算树逻辑&#xff09;公式。A[]、E<>这些符号组合看起来像天书&#xff0c;教科书上的…...

保姆级教程:在Ubuntu 22.04上从源码编译DPDK TestPMD并跑通第一个包转发测试

从零构建DPDK TestPMD&#xff1a;Ubuntu 22.04实战指南与性能调优 当你第一次听说DPDK能实现百万级数据包转发时&#xff0c;是否好奇这背后的技术魔法&#xff1f;本文将带你用一台普通Ubuntu服务器&#xff0c;亲手搭建这套高性能网络处理框架。不同于官方文档的抽象描述&am…...

告别手搓测试平台:用Synopsys SVT APB VIP快速搭建你的SoC验证环境(附完整配置流程)

告别手搓测试平台&#xff1a;用Synopsys SVT APB VIP快速搭建你的SoC验证环境&#xff08;附完整配置流程&#xff09; 在SoC验证领域&#xff0c;APB总线作为AMBA协议家族中最基础的外设连接标准&#xff0c;几乎出现在每一个现代芯片设计中。然而&#xff0c;许多验证工程师…...

告别卡顿!用UltraISO给旧笔记本装Win10和Ubuntu双系统,从制作启动盘到分区配置完整流程

旧笔记本焕新指南&#xff1a;用UltraISO打造Win10与Ubuntu双系统全流程 每次打开那台陪伴多年的旧笔记本&#xff0c;风扇的轰鸣声和系统卡顿的转圈图标都在提醒你——是时候给它一次重生了。不同于直接更换硬件的高成本方案&#xff0c;通过双系统安装让老旧设备重获新生&…...

别再傻傻分不清了!MIPI DPHY和CPHY到底怎么选?从带宽、成本和PCB布线给你讲透

MIPI DPHY与CPHY工程选型实战指南&#xff1a;从理论到PCB布局的完整决策框架 在移动设备硬件设计中&#xff0c;MIPI接口的选择往往成为影响项目成败的关键决策点。当面对新一代图像传感器规格书上的DPHY/CPHY双模支持标识时&#xff0c;资深工程师的眉头总会不自觉地皱起——…...

彻底告别Ubuntu 20.04休眠唤醒黑屏:除了降级驱动,你还可以这样一劳永逸地禁用挂起

彻底告别Ubuntu 20.04休眠唤醒黑屏&#xff1a;系统级电源管理优化指南 如果你正在使用Ubuntu 20.04并频繁遭遇休眠唤醒后的黑屏问题&#xff0c;这篇文章将为你提供一套完整的解决方案。不同于常见的驱动降级方案&#xff0c;我们将从系统配置层面入手&#xff0c;通过调整电源…...

Oracle数据库深度解析:从入门到精通的全面指南

在当今数据驱动的时代&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;已成为企业信息化建设的核心。作为全球领先的商业数据库产品&#xff0c;Oracle数据库凭借其卓越的性能、高可用性和强大的扩展能力&#xff0c;长期占据市场主导地位。本文将为您带来一份从入门到…...

SAP ABAP开发必看:FOR ALL ENTRIES性能翻倍的隐藏参数rsdb/max_blocking_factor实战调优

SAP ABAP性能调优实战&#xff1a;FOR ALL ENTRIES参数优化全解析 当你在ABAP开发中处理百万级数据时&#xff0c;是否遇到过这样的场景&#xff1a;明明使用了FOR ALL ENTRIES语句&#xff0c;程序却像蜗牛一样缓慢&#xff1f;这背后隐藏着一个关键参数——rsdb/max_blocking…...

怪物猎人世界终极叠加层工具:HunterPie 5分钟快速上手指南

怪物猎人世界终极叠加层工具&#xff1a;HunterPie 5分钟快速上手指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/HunterPi…...

告别LSMW!SAP S/4HANA数据迁移新宠:手把手激活Migration Cockpit (LTMC/LTMOM)服务

SAP S/4HANA数据迁移革命&#xff1a;Migration Cockpit全流程实战指南 在SAP生态系统中&#xff0c;数据迁移一直是项目实施过程中最关键的环节之一。传统LSMW工具虽然功能强大&#xff0c;但随着S/4HANA的推出&#xff0c;其局限性日益凸显。本文将带您深入探索SAP官方推荐的…...

用1DCNN预测股票价格:一份基于TensorFlow/Keras的保姆级实战代码解析

用1DCNN预测股票价格&#xff1a;从数据预处理到模型优化的全流程实战 金融时间序列预测一直是量化分析领域的核心挑战之一。传统的统计方法如ARIMA在处理非线性关系时表现有限&#xff0c;而深度学习中的一维卷积神经网络(1DCNN)因其捕捉局部特征的能力&#xff0c;在股价预测…...

别再只复制粘贴了!深入理解阿里云IoT设备三元组(ProductKey/DeviceName/DeviceSecret)的安全与应用

阿里云IoT设备三元组安全实践指南&#xff1a;从基础认知到高级防护策略 在物联网项目开发中&#xff0c;设备身份认证是保障系统安全的第一道防线。许多开发者虽然能够快速完成设备接入&#xff0c;但对认证核心——设备三元组&#xff08;ProductKey/DeviceName/DeviceSecret…...

从理论到落地,一文读懂现代AI Agent的完整记忆流水线

来源&#xff1a;DeepHub IMBA 本文约6500字&#xff0c;建议阅读13分钟本文介绍 AI Agent 四大记忆分类与流水线&#xff0c;解析生产架构、选型方案及常见落地误区。每一次 LLM 调用都是无状态的。模型读上下文窗口&#xff0c;生成响应然后忘掉一切。这对单轮问答没问题。对…...

中国科学院发布类脑大模型瞬悉2.0,打破长序列与低功耗部署核心瓶颈

来源&#xff1a;ScienceAI 本文约3000字&#xff0c;建议阅读5分钟验证了类脑机制与高效模型架构结合的广阔前景。当前&#xff0c;大模型发展正从「参数和数据规模驱动」逐步延展至「上下文能力驱动」。在智能体、代码理解、长文档分析等应用中&#xff0c;模型需要处理数十万…...

云原生 Kubernetes 核心概念与组件详解

目录 一、Kubernetes 是什么&#xff1f; 核心功能概览 二、部署演进&#xff1a;从物理机到容器 1. 传统部署时代 2. 虚拟化部署时代 3. 容器部署时代 三、Kubernetes 集群架构 1. 控制平面组件&#xff08;集群大脑&#xff09; &#xff08;1&#xff09;kube-apise…...

保姆级教程:小白也能轻松上手 AI 硬件

大家好&#xff0c;我是siuser小伟如果你是一个小白&#xff0c;又想玩一下硬件的话&#xff0c;那我一定推荐你去接触 AI 小智。因为他们的生态非常好&#xff0c;教程非常详细&#xff0c;你也可以跑一个专属于你自己的 AI 硬件。这篇文章专门写给第一次部署小智 Go 后端的人…...

PHP怎么处理Eloquent Attribute Harmonization属性协调_Laravel解决数据冲突【教程】

Eloquent 属性协调失败源于 $casts、访问器、序列化逻辑等机制作用域与执行顺序不一致&#xff1b;应优先用 $casts 处理类型转换&#xff0c;访问器仅用于动态计算&#xff0c;JSON 字段需显式标记 dirty 或拆分为关联模型。PHP 中 Eloquent 的 “Attribute Harmonization” 并…...

Go语言匿名函数如何写_Go语言匿名函数和闭包教程【对比】

Go匿名函数写作func(参数)返回类型{函数体}&#xff0c;需完整声明&#xff1b;闭包是匿名函数引用外层局部变量并逃逸出作用域时形成的行为结果&#xff0c;捕获变量引用而非值。Go 里匿名函数怎么写&#xff0c;直接上手就用Go 的匿名函数就是没名字的函数字面量&#xff0c;…...

5步精通:Windows风扇智能控制终极指南

5步精通&#xff1a;Windows风扇智能控制终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanControl.Rel…...

终极指南:如何解决FanControl风扇突然“隐身“问题 - 快速恢复硬件识别的完整教程

终极指南&#xff1a;如何解决FanControl风扇突然"隐身"问题 - 快速恢复硬件识别的完整教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: http…...

碧蓝航线Perseus补丁:零偏移设计实现全皮肤解锁的终极指南

碧蓝航线Perseus补丁&#xff1a;零偏移设计实现全皮肤解锁的终极指南 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 在碧蓝航线这款广受欢迎的海战游戏中&#xff0c;玩家们常常为那些精美的限定皮肤只…...

联想刃7000k BIOS解锁终极指南:安全释放隐藏性能的3种方法

联想刃7000k BIOS解锁终极指南&#xff1a;安全释放隐藏性能的3种方法 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 对于联想刃7…...

3步解锁网易云音乐NCM文件:ncmdump让你的音乐自由播放

3步解锁网易云音乐NCM文件&#xff1a;ncmdump让你的音乐自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的加密NCM文件无法在其他设备播放而烦恼吗&#xff1f;ncmdump作为一款专业的网易云音乐NCM文件…...

如何在5分钟内将你的普通鼠标变成macOS生产力神器

如何在5分钟内将你的普通鼠标变成macOS生产力神器 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为macOS上鼠标滚轮生硬、侧键闲置而烦恼吗…...