Docker 容器镜像瘦身,减少磁盘占用

很多朋友用 Docker 跑了一段时间后,发现磁盘空间越来越少。docker images 一查,十几 GB 甚至几十 GB 的镜像堆在那里,删又不敢乱删。
其实 Docker 容器镜像瘦身并不复杂,下面我从原因讲起,带你一步步减少磁盘占用。

为什么 Docker 镜像越来越臃肿?

Docker 镜像由一层层只读层组成。
每次 docker builddocker pull 或者运行容器后残留的临时层,都会占用磁盘。
常见元凶包括:

  • 基础镜像过大:比如 Ubuntu 基础镜像有 200+ MB,而 Alpine 只有 5 MB。
  • 未清理的构建缓存docker build 产生的中间层不会自动删除。
  • 悬挂镜像(dangling images):无标签的重复镜像。
  • 停止的容器和未使用的网络/卷:这些对象的文件仍然留在磁盘。

了解原因后,我们直接动手操作。

第一步:检查当前磁盘占用情况

打开终端,先看看 Docker 占了多少空间:

docker system df

输出会显示镜像、容器、本地卷、构建缓存各自的占用。
如果想看更详细的信息,用:

docker system df -v

记录下当前总占用,便于后面对比效果。

第二步:清理无用的镜像、容器和构建缓存

重要提示:下面的操作会删除所有未被使用的对象,包括停止的容器、悬挂镜像、未使用的网络和构建缓存。
如果你的某些容器需要保留日志或数据,请先确保卷(volume)已挂载,或者先把容器停止(docker stop)但不要删除。

执行清理命令:

docker system prune -a --volumes

参数说明:

  • -a:删除所有未被使用的镜像(不只是悬挂镜像)。
  • --volumes:一并清理未使用的匿名卷(慎用,确认不需要的数据)。
  • 不加 --volumes 的话,卷不会被清理,更安全。

执行后会让你确认,输入 y
清理完再跑一次 docker system df,你会发现磁盘占用明显下降。

第三步:给现有镜像“减肥”——多阶段构建

如果你自己写 Dockerfile,强烈推荐多阶段构建
它允许你在一个 Dockerfile 中使用多个 FROM 语句,只有最后一个阶段的东西会进入最终镜像。

举例:编译 Go 程序时,先在一个带 Go 环境的镜像里编译,再把编译产物复制到一个空镜像(如 scratchalpine)中。

# 第一阶段:编译
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 第二阶段:运行
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

这样最终镜像只有几十 MB,而不是几百 MB。

如果你用的是现成镜像,考虑替换基础镜像。
例如将 node:18 换成 node:18-alpinealpine 版本比标准版小很多,且功能基本一致。

第四步:高频问题解答

Q:docker system prune -a 会不会删掉正在运行的容器使用的镜像?

不会。
Docker 会保留被任何容器(包括停止的容器)引用的镜像和层。
只有完全未被使用的镜像才会被清理。

Q:清理后重新拉取镜像会不会又占大量空间?

会的,但你可以通过配置注册表镜像加速,或者使用 docker pull 时指定 --platform 避免拉取多余架构。
同时,多阶段构建能让后续拉取的基础镜像更小。

Q:如何只清理构建缓存而不动镜像?

使用 docker builder prune
这个命令只会删除构建过程中生成的缓存层,不会影响已拉取的镜像和运行中的容器。

第五步:验证效果并养成定期维护习惯

再次运行 docker system df,对比第一步记录的数字,你应该能看到明显减少。

为了保持长期清爽,建议:

  • 每周运行一次 docker system prune -f(不带 -a,只清理悬挂镜像和停止容器)。
  • 每月运行一次带 -a 的清理。
  • 写 Dockerfile 时优先用 alpine 或 slim 版本,并采用多阶段构建。
  • 使用 docker image prune -adocker system df 监控磁盘。

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

分享到:
上一篇
宝塔面板安装后无法访问,教你排查防火墙
下一篇
服务器被暴力破解,如何限制登录次数?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意