Docker磁盘满了的高效又安全清理方案小结

 更新时间:2025年10月23日 15:13:09   作者:王中阳Go背后的男人  
明明代码逻辑没问题,部署时却频频报错,排查半天发现是服务器磁盘被占满了,下面我们就来看看解决思路,希望可以帮助大家快速释放磁盘空间

最近在带着大家做项目的时候碰到了一个印象很深的问题,和大家总结分享一下:明明代码逻辑没问题,部署时却频频报错,排查半天发现是服务器磁盘被占满了

今天把解决思路整理出来,希望能帮你快速释放磁盘空间

问题根源:Docker 为什么会占满磁盘

Docker 运行时会产生大量“临时资源”,比如:

  • 测试后停止运行的容器
  • 构建失败或过时的镜像
  • 未被使用的自定义网络
  • 构建镜像时产生的缓存文件

这些资源默认不会自动删除,积累久了就会导致磁盘告警。好在 Docker 提供了专门的清理命令,一招就能解决大部分问题。

核心解决方案:docker system prune命令

一、命令简介

docker system prune 是 Docker 提供的系统级资源清理命令,用于自动删除以下未被使用的资源

  • 已停止的容器(Stopped containers)
  • 悬空镜像(Dangling images)
  • 未被任何容器使用的自定义网络(Unused networks)
  • 构建缓存(Build cache)

默认不会删除

  • 正在运行的容器
  • 有标签且未被引用的镜像(如 nginx:latest
  • 数据卷(Volumes)
  • 默认网络(bridgehostnone

二、基本语法

docker system prune [OPTIONS]

常用选项

选项说明
-a, --all同时删除所有未被使用的镜像 (不仅是悬空镜像)
-f, --force跳过确认提示,直接执行清理(静默模式)
--filter按条件过滤要删除的资源(如 until=24h)
--volumes额外删除未使用的本地卷(⚠️ 高危操作!)

三、详细行为说明

默认行为(不加-a)

执行 docker system prune 会删除:

资源类型删除条件
容器状态为 exitedcreated 等非运行状态
镜像dangling=true(即 <none>:<none> 且无容器引用)
网络用户创建的自定义网络,且未被任何容器使用
构建缓存所有 docker build 产生的中间层缓存

四、使用示例

示例 1:交互式清理(推荐首次使用)

$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all build cache
Are you sure you want to continue? [y/N] y

示例 2:静默清理(推荐使用)

docker system prune -f

示例 3:彻底清理(包括未使用的有标签镜像)

docker system prune -a -f

示例 4:清理 + 删除未使用卷(高危!)

docker system prune --volumes -f

五、安全性与风险控制

安全保障

  • 不影响正在运行的容器和服务
  • 不删除默认网络和关键系统资源
  • 卷(Volumes)默认保留,防止数据丢失

风险提示

操作风险
prune -a可能误删后续部署所需的镜像
prune --volumes永久删除数据库等持久化数据
在生产环境自动执行可能导致服务恢复困难(缺少镜像)

安全建议

先预览再执行:不加 -f 运行,确认删除列表

生产环境避免 -a--volumes

重要镜像提前备份

docker save myapp:v1 -o myapp_v1.tar

定期监控磁盘使用

docker system df

六、查看清理效果

清理前后对比磁盘占用:

# 清理前
docker system df

# 执行清理
docker system prune -f

# 清理后
docker system df

输出示例:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          10        3         2.1GB     1.4GB (66%)
Containers      5         3         120MB     80MB (66%)
Local Volumes   4         2         500MB     300MB (60%)
Build Cache     -         -         800MB     800MB

总结:让磁盘清理成为习惯

磁盘管理是运维的基础工作。定期执行 docker system prune -f 能有效避免磁盘满的问题,配合 docker system df 监控,可让部署更顺畅。

到此这篇关于Docker磁盘满了的高效又安全清理方案小结的文章就介绍到这了,更多相关Docker磁盘清理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Centos Stream9安装Docker报错download.docker.com:443的原因分析与解决方法

    Centos Stream9安装Docker报错download.docker.com:443的原因分析与解决

    这篇文章主要为大家详细介绍了Centos Stream9在安装Docker时,报错download.docker.com:443的原因分析与解决方法,有需要的小伙伴可以参考下
    2025-10-10
  • docker运行容器远程挂载卷的方法

    docker运行容器远程挂载卷的方法

    本篇文章主要介绍了docker运行容器远程挂载卷的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 使用Docker构建多环境应用的完整指南

    使用Docker构建多环境应用的完整指南

    Docker已经成为了现代应用程序开发和部署的核心工具之一,本文将介绍如何使用Docker构建多环境应用,包括开发、测试和生产环境,希望对大家有所帮助
    2025-08-08
  • 使用 kind 和 Docker 启动本地的 Kubernetes环境

    使用 kind 和 Docker 启动本地的 Kubernetes环境

    这篇文章主要介绍了使用 kind 和 Docker 启动本地的 Kubernetes环境,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • docker的基本使用及使如何用Docker 运行D435i

    docker的基本使用及使如何用Docker 运行D435i

    这篇文章主要介绍了docker的基本使用及使如何用Docker 运行D435i,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • docker-compose搭建etcd集群的实现(三节点)

    docker-compose搭建etcd集群的实现(三节点)

    本文主要介绍了docker-compose搭建etcd集群的实现(三节点),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • docker 多个-e参数的具体使用

    docker 多个-e参数的具体使用

    在使用Docker镜像运行容器时,我们可以通过使用-e参数来设置环境变量,有时我们需要设置多个环境变量,这就涉及到如何实现多个-e参数的问题,本文就来详细的介绍一下
    2024-01-01
  • Dockerfile文件详解

    Dockerfile文件详解

    Dockerfile是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需的指令和说明。本文详细讲解了Dockerfile文件,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Docker多容器连接(以Tomcat+Mysql为例)

    Docker多容器连接(以Tomcat+Mysql为例)

    这篇文章主要介绍了Docker多容器连接(以Tomcat+Mysql为例),Docker提供了多个容器直接访问的方法,可以使多个容器直接通过网络端口进行访问
    2017-03-03
  • 如何将 Docker 镜像保存到本地文件系统中

    如何将 Docker 镜像保存到本地文件系统中

    将Docker镜像保存到本地文件系统中,可以使用docker save命令,本文分步骤给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-01-01

最新评论