统信UOS中Docker磁盘清理需分层操作:先用docker image prune安全清理悬空镜像;再用docker image prune -a -f删除未使用的带标签镜像;接着用docker volume prune清除未挂载卷;最后用docker system prune -a -f --volumes一次性清空容器、镜像、卷及网络。

统信UOS系统中Docker长期运行后,镜像层残留、悬空镜像堆积、未挂载卷滞留会悄悄吃掉数十GB磁盘空间,尤其在开发测试频繁的环境下,/var/lib/docker目录可能膨胀至上百GB,导致系统响应变慢甚至触发磁盘告警。
清理所有悬空镜像(最安全起步)
这一步只删那些没打标签、也没被任何容器引用的中间层镜像,不会动你正在用的镜像,执行零风险。
运行:docker image prune
终端会提示“Total reclaimed space: X.XXGB”,这个数字就是立即释放的空间。如果你看到提示里列出的镜像是你明确记得构建过但没加-t参数的,说明它正躺在那里白占地方。
删除所有未被容器使用的镜像(含带标签的)
当你确认没有停止但未来还要重启的容器依赖旧镜像时,才执行这步。它会删掉所有当前没容器在跑、也没容器已创建但未启动所关联的镜像——包括你手动pull下来却从未run过的带标签镜像。
先检查:运行 docker ps -a,确认列表里没有状态为exited但你还打算再次启动的容器。如果有,记下它的IMAGE列值,别删对应镜像。
执行:docker image prune -a -f
【-f 参数不可省略】 否则命令会停在交互确认环节,而统信UOS桌面环境默认无TTY分配,导致命令卡住不动。
精准清除未挂载的数据卷
数据卷是磁盘空间“隐形杀手”,尤其开发中反复docker-compose up/down产生的匿名卷,从不自动消失。它们藏在/var/lib/docker/volumes/下,普通用户ls都看不到,但df -h能看到/dev/mapper/pve-vm--100--disk--0已90%满。
Docker Hub (hub.docker.com)。此技能适用于所有 Docker Hub 操作,包括读取、创建、更新和删除数据。只要任务涉及 Docker Hub,就使用此技能。
方法一(推荐):直接清理全部未挂载卷
运行:docker volume prune
输入y确认即可。该操作仅影响当前未被任何容器声明为-v或volumes:绑定的卷,已挂载的卷完全不受影响。
方法二(谨慎):查看再删
先运行:docker volume ls -f dangling=true
这条命令会列出所有“悬空卷”——即创建后从未被挂载、或原挂载容器已被删除的卷。如果输出里有你认识的项目名(比如myapp_db_data_2024),请人工核对是否真不需要;确认后逐个删:docker volume rm 卷名。
连根清理:容器+镜像+卷+网络一次性归零
适用于重装环境、迁移前清场、或磁盘已爆且确定无需保留任何历史资源的场景。
第一步:停止所有运行中容器docker stop $(docker ps -q)
第二步:强制删除所有容器(含已停止的)docker rm -f $(docker ps -a -q)
第三步:删除所有镜像docker rmi -f $(docker images -q)
第四步:清除所有未挂载卷和自定义网络docker system prune -a -f --volumes
【此命令不可逆】 它会同时删掉所有未挂载卷、所有未使用网络、所有构建缓存、所有停止容器日志,执行后/var/lib/docker/volumes/和/var/lib/docker/network/将几乎为空目录。










