Docker镜像瘦身节省住宅硬盘

很多朋友在住宅服务器或NAS上跑Docker,用着用着发现硬盘越来越少。
Docker镜像、容器日志和卷会悄悄吃掉几十GB空间,对家用小硬盘来说很心疼。
本文面向零基础用户,按步骤帮你给Docker“减肥”,释放可用空间。

清理前先看看是哪占了空间

打开终端执行以下命令,可以快速了解当前Docker占用的磁盘情况:

docker system df

输出会显示镜像、容器、卷、构建缓存各自的空间。
如果镜像那行占用很大,说明是你的瘦身重点。
截图或记下数据,方便后面对比效果。

分步操作:五步释放硬盘

第一步:一键清理未使用的Docker对象

这个命令会删除所有停止的容器、没被使用的镜像(包括 dangling 镜像和未打标签的层)、未被使用的网络,以及所有未被使用的卷(谨慎)。

docker system prune -a --volumes
注意:后面加上 -a 会删除所有没有容器使用的镜像,包括那些可能以后用到的。如果你不想删得太狠,可以先只执行 docker system prune(只清理 dangling 镜像)。

第二步:手动清理大型镜像和临时层

查看当前所有镜像及其大小:

docker image ls --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

如果发现某个镜像很大(比如上G),且不再使用,可以用 docker image rm 镜像名:标签 删除。
如果你自己构建镜像,建议改用 Alpine 版基础镜像,比如 node:alpine 代替 node:latest,体积能小一半。

第三步:优化Dockerfile,减少层数

如果你自己写 Dockerfile,用多阶段构建可以显著减小最终镜像体积。
例如:

FROM node:alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

这样最终镜像只保留编译后的产物,不包含 node_modules 和源码。

第四步:设置容器日志大小限制

容器日志常被忽略,却能塞满 /var/lib/docker。
运行容器时加上 --log-opt max-size=10m --log-opt max-file=3,限制单个日志文件10MB,最多保留3个文件。

如果已有容器占用空间,可以配合清理命令:

sudo journalctl --vacuum-size=200M   # 清理系统日志

第五步:定期自动清理脚本

创建脚本 /usr/local/bin/docker-clean.sh

#!/bin/bash
# 保留最近7天的镜像,删除更老的未使用镜像
docker image prune -a --force --filter "until=168h"
# 清理所有未使用的卷
docker volume prune -f

给执行权限并加入 crontab:

crontab -e
0 3 * * 0 /usr/local/bin/docker-clean.sh

每周日凌晨3点自动执行。

避坑指南

  • 不要删除正在使用的镜像:删除前先用 docker ps 查看运行中的容器是否依赖该镜像。
  • 谨慎使用 --volumes:如果卷里存放了数据库或重要数据,加 --volumes 会一并删除。建议先备份或单独处理。
  • 多阶段构建的常见错误:最后阶段只复制了部分文件,可能导致运行时缺少依赖。测试时可以用 docker run --rm 你的镜像 启动检查。

效果验证

再次运行 docker system df,对比之前的数值。
通常一次清理后能释放几十GB。
另外可以用 du -sh /var/lib/docker/ 查看 Docker 数据目录整体大小。

如果清理后某个容器启动失败,多半是镜像被误删了,重新拉取或构建即可。

高频问题解答

Q:docker system prune -a 删除了所有镜像怎么办?
A:重新拉取需要镜像:docker pull 镜像名:标签。如果拉取很慢,建议换国内镜像加速器。

Q:如何保留特定镜像不被清理?
A:给镜像打标签或者运行一个依赖于它的容器,之后 prune 就不会删除它。

Q:住宅服务器硬盘很小,还有更多释放空间的方法吗?
A:检查 /var/lib/docker/containers/ 下的日志,手动 truncate 大文件。也可以定期重启容器(不会影响新日志)。

如果你正在处理Docker镜像瘦身节省住宅硬盘,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
用Docker容器搭建跨境独立站:零基础完整实操教程
下一篇
Docker私有仓库内网加速拉取
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意