
玩 Docker 一段时间后,特别是部署了各种重型 AI 环境(比如含有庞大 Python 库的网关)或影音刮削工具后,硬盘空间经常会不知不觉地被吞噬殆尽。当 NAS 存储分区突然亮起红灯时,掌握一些精准的诊断和清理命令就显得尤为重要了。
这篇备忘录整理了日常折腾 Docker 时最常用的命令,并重点分享如何揪出吃掉几十个 G 硬盘空间的“元凶”。
这部分是每天都会用到的高频命令,主要用于查看和管理容器状态。
bashdocker ps
bashdocker ps -a
bashdocker start <容器名或ID> docker stop <容器名或ID> docker restart <容器名或ID>
bashdocker rm <容器名或ID>
当发现 Docker 占用了大量空间时,不要盲目乱删。通过以下两个命令,可以精准定位到底是哪个镜像或目录在捣鬼。
有时候容器配置不当,没有将数据目录正确挂载到物理硬盘上,会导致下载的文件全塞进容器内部。
bashdocker ps -as
执行后请注意输出结果的最后一列 SIZE。例如 296MB (virtual 1.91GB):括号外的数字代表容器运行后内部产生的真实垃圾数据,如果这个数字大得离谱,说明挂载配置出了问题;括号里的数字则是镜像的基础大小。
如果想知道底层存储到底是怎么分布的,直接运行这行神仙组合命令:
bashdu -sh $(docker info -f '{{.DockerRootDir}}')/* | sort -rh
这条命令会自动查找 Docker 的真实存储路径,并按大小降序排列其中的文件夹。如果 overlay2 目录动辄几十 GB,通常是因为拉取了太多庞大的基础镜像;如果是 containers 目录极大,则可能是某个容器的日志失控了。
在确认了空间被无用数据占用后,使用以下命令可以安全地进行大面积清理,瞬间释放十几 G 甚至几十 G 的空间。
安全地清理所有已停止的容器、未被使用的网络以及“悬空”的无用镜像:
bashdocker system prune
当你频繁更新容器版本后,旧版本的镜像并不会自动删除。这个命令会把所有当前没有被任何运行中容器使用的旧镜像彻底干掉:
bashdocker image prune -a
有些容器被删除了,但它申请的虚拟数据卷还在默默占用硬盘。执行以下命令彻底清空它们:
bashdocker volume prune
⚠️ 核心提示: 在执行强力清理前,请务必确保所有需要保留数据的容器都已经正确使用了本地路径映射(Bind Mount)。只要挂载正确,清理镜像和游离卷绝对安全。
本文作者:小转圈
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!