银河麒麟OS上Docker长期不清理会导致/var/lib/docker目录膨胀致根分区告急;需先检查Docker状态,以普通管理员身份执行docker system prune -a --volumes或分步清理容器、悬空镜像、构建缓存及大镜像。

银河麒麟OS上Docker镜像与容器长期不清理会导致/var/lib/docker目录持续膨胀,单台机器运行半年后常占用10GB以上空间,根分区迅速告急,甚至触发系统更新失败或容器启动报错“no space left on device”。
确认Docker服务状态并切换到安全操作身份
先检查Docker是否正在运行:systemctl is-active docker。若返回inactive,跳过后续所有步骤——此时无运行中容器或镜像可清理。
必须使用普通管理员用户(如安装时创建的kylin)执行清理,【切勿用root账号直接运行docker命令】,否则可能因UKUI界面权限隔离导致容器列表显示为空或删除后残留元数据。
切换身份:su - kylin(将kylin替换为你的实际用户名)。
一键清理已退出容器、悬空镜像与构建缓存
执行以下命令一次性清除三类冗余对象:
docker system prune -a --volumes
该命令会删除所有已停止容器、所有未被任何镜像引用的悬空镜像(dangling images)、所有构建缓存,以及所有未被容器挂载的卷(--volumes)。执行时会二次确认,输入y回车继续。
注意:此操作不可逆,且【会清空所有未被运行中容器使用的卷】,若你手动创建过独立卷(如用于数据库持久化),请提前用docker volume ls核对名称,避免误删。
分步精准清理(推荐给生产环境)
当需要保留构建缓存或已有卷时,改用分步方式控制风险。
第一步:停止并删除所有已退出容器
docker stop $(docker ps -aq) 2>/dev/null && docker rm $(docker ps -aq)
第二步:删除所有悬空镜像(仅释放镜像层,不碰运行中容器所用镜像)
docker rmi $(docker images -f "dangling=true" -q)
第三步:清理构建缓存(仅删buildkit缓存,不影响镜像本身)
docker builder prune -f
第四步:人工检查并删除指定大镜像
先列出按大小排序的镜像:docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -hr | head -n 10;再对确认废弃的镜像执行docker rmi 镜像ID。


















