Docker Desktop 如何查看并限制容器磁盘占用
Docker Desktop 里要先分清两件事:查看谁占了空间,以及限制 Docker 引擎最多能使用多少空间。Images、Containers、Volumes 和 docker system df -v 用来定位占用;Settings > Resources > Advanced > Disk usage limit 设置的是 Docker 引擎总体磁盘上限,不是单个容器的独立配额。
Docker Desktop 官方地址:https://www.docker.com/products/docker-desktop/
官方设置文档:https://docs.docker.com/desktop/settings-and-maintenance/settings/
最稳妥的顺序是:先记录当前镜像、容器、卷和构建缓存的占用,再清理明确不需要的对象,最后根据剩余数据量设置总体上限。不要在没有备份的情况下直接把磁盘镜像上限调到低于现有数据量。
最终应该得到哪三个结果
完成后,你应该能回答三个问题:
- 当前空间主要由镜像、容器可写层、卷还是构建缓存占用。
- 某个容器的磁盘活动和文件变化是否持续增长。
- Docker Desktop 所在后端是否支持 Disk usage limit,以及设置后的总上限是多少。
这三个结果不能用同一个数字替代。容器详情里的磁盘读写是活动指标,Images 和 Volumes 页面展示对象大小,docker system df -v 给出守护进程对象级汇总,而 Disk usage limit 控制的是 Docker Desktop 引擎可使用的总体空间。
步骤一:从 Images 和 Volumes 找到主要占用
- 打开 Docker Desktop Dashboard。
- 在左侧选择 Images。
- 查看列表上方的镜像总数和总磁盘空间,再按 Size 排序。
- 用 In use、Unused 或 Dangling 状态区分仍被容器使用的镜像。
- 切换到 Volumes,按 Size 排序,并用 In use 与 Unused 筛选。
可见成功状态:Images 页面顶部出现镜像总占用,列表能按 Size 排序;Volumes 页面能看到每个卷的 Size 与使用状态。此时先记录最大的几个对象,不要立即批量删除。

镜像大小不能简单相加为真实新增占用,因为多个镜像可能共享层。Volumes 则常常保存数据库、缓存或上传文件,删除卷会删除其中数据。Docker 官方说明,使用中的卷不能直接删除;清理前应先确认关联容器和备份策略。
步骤二:进入容器详情核对持续增长
- 在左侧选择 Containers。
- 使用搜索框找到目标容器或展开 Compose 项目。
- 选中容器后打开 Stats,观察 CPU、内存、网络和磁盘空间相关指标。
- 切换到 Files,查看最近新增或修改的目录;对数据库和上传目录,优先确认它们是否应放到命名卷。
- 若容器使用了卷,再到 Volumes > 目标卷 > Stored data 查看文件夹和文件大小。
可见成功状态:目标容器详情页已显示 Stats,Files 能看到容器文件系统内容;如果数据位于命名卷,Volumes 的 Stored data 页面能对应到具体文件大小。

这里最容易混淆的是“磁盘读写”与“磁盘占用”。读写量大说明 I/O 活跃,不一定代表文件持续变大;占用增长则要结合 Files、卷大小和下一步的 docker system df -v 明细判断。
步骤三:用 docker system df -v 保存对象级明细
Docker Desktop 的界面适合快速定位,守护进程的完整分类则用官方 CLI 命令查看。打开你平时使用的命令行环境,先执行详细清单:
# 显示镜像、容器、卷和构建缓存的详细磁盘占用 docker system df -v # 只看汇总,便于修改设置后做前后对比 docker system df
可见成功状态:输出包含 Images space usage、Containers space usage、Local Volumes space usage 和 Build cache usage 等区域。容器区域的 SIZE 反映容器可写层占用,卷数据单独列在 Local Volumes,不能把两者混成一个“容器大小”。
| 对象 | 主要查看位置 | 判断重点 |
|---|---|---|
| 镜像 | Images / docker system df -v | 共享层、独占层、是否被容器使用 |
| 容器可写层 | Containers 明细 / docker system df -v | 日志、缓存、临时文件是否写进容器层 |
| 命名卷 | Volumes / Stored data | 数据库与业务数据是否可备份、是否仍被使用 |
| 构建缓存 | docker system df -v | 频繁构建是否累积了可回收缓存 |
步骤四:先整理无用对象,再决定磁盘上限
不要把 Disk usage limit 当作自动清理规则。它只是总体容量边界,不能替你判断哪些镜像、卷或缓存可以删除。先在 Images 页面筛选 Unused 或 Dangling,确认没有容器依赖后再使用批量 Delete;Volumes 页面同样先筛选 Unused,但删除前必须确认数据可恢复。
如果空间主要来自容器可写层,应优先修改容器设计:把数据库、上传目录和需要保留的数据放到命名卷或 bind mount,并为应用日志配置轮转。单纯提高上限只会推迟磁盘再次被填满。
可见成功状态:重新执行 docker system df 后,RECLAIMABLE 或总 SIZE 与清理前相比发生了符合预期的变化;业务容器仍能启动,必要卷仍显示 In use。
步骤五:在 Resources Advanced 设置总体磁盘上限
- 点击 Docker Desktop Dashboard 右上角的 Settings 图标。
- 进入 Resources > Advanced。
- 找到 Disk usage limit,查看当前上限与磁盘镜像使用情况。
- 把上限调整到高于当前有效数据量、并为构建和拉取镜像保留余量的值。
- 点击 Apply 或界面显示的应用/重启按钮,等待 Docker Desktop 恢复运行。
可见成功状态:Resources > Advanced 页面显示新的 Disk usage limit,Docker Desktop 状态恢复为 Running,容器和镜像列表仍可正常加载。

官方当前把 Disk usage limit 列为 Mac、Linux 和 Windows Hyper-V 后端的资源设置。Windows 使用 WSL 2 时,CPU、内存和 swap 主要由 WSL 2 utility VM 配置,界面项可能不同;不要照搬其他后端的路径。若页面没有该设置,先确认当前后端,而不是反复重装。
重要提醒:降低磁盘镜像最大尺寸可能涉及重建或删除现有磁盘镜像。Docker 的 Mac FAQ 明确提醒,缩小最大尺寸会删除当前磁盘镜像并导致容器与镜像丢失。任何平台在向下调整前,都应导出重要镜像、备份卷数据,并确保 Compose 文件或启动参数可重建容器。
步骤六:复核设置是否真正解决问题
- 回到 Images,确认总镜像空间与主要大镜像仍在预期范围。
- 回到 Volumes,确认业务卷仍在、状态正确。
- 重新执行
docker system df -v,保存修改后的明细。 - 运行日常构建与容器启动,观察是否出现空间不足或拉取失败。
- 若占用很快重新增长,继续定位写入容器层的日志、缓存和临时文件,而不是再次盲目提高上限。
可见成功状态:设置页保留新上限,Docker Desktop 正常运行,关键容器可以启动,前后两次磁盘明细能够解释空间变化。
设置不生效时怎么处理
Resources 里没有 Disk usage limit
先确认操作系统和虚拟化后端。官方设置表说明该项与平台和后端有关,Windows WSL 2 与 Hyper-V 的资源控制方式不同。更新 Docker Desktop 后仍没有时,应按当前后端查官方设置说明。
上限调小后可用空间没有立刻增加
最大值、磁盘镜像文件显示值和宿主机实际占用不是同一个概念。稀疏磁盘文件可能显示较大的逻辑最大值,但实际占用更小。先用 Docker Desktop 的 Advanced 页面和 docker system df 交叉确认。
某个容器还是不断变大
Disk usage limit 只限制引擎总体空间,不会单独约束这个容器。检查容器 Files、日志路径、缓存目录和挂载;把持久数据迁移到受管理的卷,并配置应用自身的清理或日志轮转。
Images 很大,但删除一个镜像释放不明显
镜像可能共享层。docker system df -v 会区分 SHARED SIZE 与 UNIQUE SIZE;真正可释放的空间更接近未被其他镜像复用的独占层。
能不能直接移动 Docker 的磁盘镜像文件?
不要在文件管理器里直接拖动。官方建议通过 Settings > Resources > Advanced > Disk image location 选择新位置并应用,否则 Docker Desktop 可能失去对磁盘镜像的跟踪。
收尾记录
把修改前后的 docker system df -v 摘要、Disk usage limit、新的 Disk image location,以及已备份的卷名称记录到项目运维文档。以后再次出现空间告警时,可以直接比较是镜像增加、构建缓存积累、容器可写层膨胀,还是业务卷自然增长,而不是从头猜测。
用 runtime/secret 降低内存转储中的密钥暴露
- 上一篇
- 用 runtime/secret 降低内存转储中的密钥暴露
- 下一篇
- secret 值转成 string 后保护能力为什么会丢失
-
- 文章 · 软件教程 | 3小时前 |
- GitHub Desktop 如何比较两个分支并只恢复一个文件
- 341浏览 收藏
-
- 文章 · 软件教程 | 4小时前 | vs code · VS Code 软件设置 扩展管理 扩展自动更新 extensions.autoUpdateDelay
- VS Code 怎样为扩展自动更新设置延迟窗口
- 190浏览 收藏
-
- 文章 · 软件教程 | 6小时前 | vs code · SSH VS Code Dev Containers Remote-SSH 远程容器
- VS Code 如何把远程 Dev Container 会话接入 SSH 项目
- 332浏览 收藏
-
- 文章 · 软件教程 | 8小时前 | 软件教程 · 接口调试 · firefox 网络请求 浏览器开发者工具 HAR Edit and Resend
- 浏览器开发者工具保存并重放网络请求的实用方法
- 222浏览 收藏
-
- 文章 · 软件教程 | 10小时前 | shell · 开发环境 云开发环境 Shell配置 GitHub Codespaces dotfiles install.sh
- GitHub Codespaces 用 dotfiles 初始化个人开发环境
- 109浏览 收藏
-
- 文章 · 软件教程 | 15小时前 | github · CI/CD · 软件教程 · 最小权限 GitHub Actions 可复用工作流 workflow_call
- GitHub Actions 抽取可复用工作流并传递最小权限
- 161浏览 收藏
-
- 文章 · 软件教程 | 17小时前 | gitHub actions ·
- GitHub Actions 用 OIDC 连接云平台并移除长期密钥
- 356浏览 收藏
-
- 文章 · 软件教程 | 19小时前 | docker 容器安全 Docker Compose tmpfs 只读根文件系统
- Docker 容器启用只读根文件系统后,临时写目录怎么挂载
- 131浏览 收藏
-
- 文章 · 软件教程 | 1天前 | docker · 软件教程 · Docker Compose 网络 自定义网络 服务名访问 容器通信 Compose DNS
- Docker Compose 自定义网络并用服务名互相访问
- 483浏览 收藏
-
- 文章 · 软件教程 | 1天前 | vs code · 软件教程 · VS Code 扩展 工作区信任 Tasks Restricted Mode
- VS Code 用工作区信任隔离陌生仓库的扩展与任务
- 306浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 385次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 462次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 473次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 410次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 237次使用
-
- Go 1.27 go doc 支持 package@version:查指定版本 API 时如何避免看错文档
- 2026-08-31 474浏览
-
- Go pkg.go.dev API 怎么读取包文档索引
- 2026-10-05 381浏览
-
- 数据库迁移状况百出?快来看看这个开源工具
- 2023-02-16 164浏览
-
- VS Code Dev Containers 实战:用容器搭建一致开发环境
- 2026-06-12 182浏览
-
- Docker Compose 本地多服务环境实战:MySQL、Redis、Nginx 一键启动
- 2026-06-12 250浏览

