编辑
2026-02-22
技术漫谈
00

目录

一、 日常基础操作
二、 进阶诊断:谁吃掉了我的硬盘空间?
1. 查看容器内部偷偷写入的数据
2. 深度剖析 Docker 底层目录占用
三、 终极清理:大扫除与空间释放
1. 官方一键清理(常规手段)
2. 强力清理历史镜像(极其有效)
3. 清理游离的数据卷

Gemini_Generated_Image_uy9x31uy9x31uy9x.png

玩 Docker 一段时间后,特别是部署了各种重型 AI 环境(比如含有庞大 Python 库的网关)或影音刮削工具后,硬盘空间经常会不知不觉地被吞噬殆尽。当 NAS 存储分区突然亮起红灯时,掌握一些精准的诊断和清理命令就显得尤为重要了。

这篇备忘录整理了日常折腾 Docker 时最常用的命令,并重点分享如何揪出吃掉几十个 G 硬盘空间的“元凶”。

一、 日常基础操作

这部分是每天都会用到的高频命令,主要用于查看和管理容器状态。

  • 查看正在运行的容器:
bash
docker ps
  • 查看所有容器(包括已停止的):
bash
docker ps -a
  • 启动 / 停止 / 重启容器:
bash
docker start <容器名或ID> docker stop <容器名或ID> docker restart <容器名或ID>
  • 删除特定容器: (注意:删除前需要先停止容器)
bash
docker rm <容器名或ID>

二、 进阶诊断:谁吃掉了我的硬盘空间?

当发现 Docker 占用了大量空间时,不要盲目乱删。通过以下两个命令,可以精准定位到底是哪个镜像或目录在捣鬼。

1. 查看容器内部偷偷写入的数据

有时候容器配置不当,没有将数据目录正确挂载到物理硬盘上,会导致下载的文件全塞进容器内部。

bash
docker ps -as

执行后请注意输出结果的最后一列 SIZE。例如 296MB (virtual 1.91GB):括号外的数字代表容器运行后内部产生的真实垃圾数据,如果这个数字大得离谱,说明挂载配置出了问题;括号里的数字则是镜像的基础大小。

2. 深度剖析 Docker 底层目录占用

如果想知道底层存储到底是怎么分布的,直接运行这行神仙组合命令:

bash
du -sh $(docker info -f '{{.DockerRootDir}}')/* | sort -rh

这条命令会自动查找 Docker 的真实存储路径,并按大小降序排列其中的文件夹。如果 overlay2 目录动辄几十 GB,通常是因为拉取了太多庞大的基础镜像;如果是 containers 目录极大,则可能是某个容器的日志失控了。


三、 终极清理:大扫除与空间释放

在确认了空间被无用数据占用后,使用以下命令可以安全地进行大面积清理,瞬间释放十几 G 甚至几十 G 的空间。

1. 官方一键清理(常规手段)

安全地清理所有已停止的容器、未被使用的网络以及“悬空”的无用镜像:

bash
docker system prune

2. 强力清理历史镜像(极其有效)

当你频繁更新容器版本后,旧版本的镜像并不会自动删除。这个命令会把所有当前没有被任何运行中容器使用的旧镜像彻底干掉:

bash
docker image prune -a

3. 清理游离的数据卷

有些容器被删除了,但它申请的虚拟数据卷还在默默占用硬盘。执行以下命令彻底清空它们:

bash
docker volume prune

⚠️ 核心提示: 在执行强力清理前,请务必确保所有需要保留数据的容器都已经正确使用了本地路径映射(Bind Mount)。只要挂载正确,清理镜像和游离卷绝对安全。

本文作者:小转圈

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!