华北地区负责人:17340067106(毛经理)
华东地区负责人:17358670739(甘经理)
华南、华西地区负责人:19113907060(耿女士)
软件算法咨询:18982151213(刘先生)

联系我们
产品咨询

Docker 镜像存储优化:从清理到构建的全面指南

作者:万物纵横
发布时间:2026-05-19 09:13
阅读量:

Docker 镜像存储优化:从清理到构建的全面指南(图1)


一、先理清存储现状


1. 查看磁盘占用


# 整体docker磁盘占用

docker system df


# 详细分层大小

docker history 镜像名


# 查看本地镜像

docker images


2. 存储目录位置


默认:/var/lib/docker


修改存储路径(迁移):


1. 停止 docker


2. 拷贝原目录到新盘


3. 修改 /etc/docker/daemon.json


{"data-root":"/data/docker"}


4. 重启 docker


二、日常清理(最常用)


1. 一键清理无用资源


# 清理停止容器、无用网络、悬空镜像

docker system prune


# 连未使用镜像一起删(慎用)

docker system prune -a


# 清理构建缓存

docker builder prune


2. 精准删除


# 删除指定镜像

docker rmi 镜像ID


# 删除悬空镜像 <none>

docker images -f "dangling=true" -q | xargs docker rmi


# 删除停止的所有容器

docker container prune


三、镜像构建层面优化(治本)


1. 选用轻量基础镜像


优先顺序:


alpine > slim > debian > ubuntu


示例:


# 别用大镜像

# FROM ubuntu:22.04

# 改用极小镜像

FROM python:3.11-alpine


2. 合并 RUN 指令,减少镜像层数


错误(多层冗余)


RUN apt update

RUN apt install git

RUN apt install curl


正确(合并成一层)


RUN apt update && \

    apt install -y git curl && \

    rm -rf /var/lib/apt/lists/*


安装完立刻删缓存,层内瘦身。


3. 合理使用 .dockerignore


排除无用文件,不打包进镜像


.git

node_modules

logs

tmp

.env

*.md


4. 多阶段构建(最强瘦身)


编译打包在第一阶段,只拷贝运行文件,抛弃编译环境


# 构建阶段

FROM golang:alpine AS builder

WORKDIR /app

COPY . .

RUN go build -o app


# 运行阶段(仅保留二进制)

FROM alpine

COPY --from=builder /app/app /usr/local/bin/

CMD ["app"]


最终镜像只有几十 MB。


5. 避免安装多余依赖


生产镜像不装:vim、net-tools、debug 工具


6. 统一时区、统一源,不重复写入


所有配置放同一 RUN 层


四、存储驱动优化


生产推荐 overlay2(默认主流)


修改daemon.json


{

  "storage-driver": "overlay2"

}


优势:分层高效、读写快、磁盘占用低。


五、镜像生命周期管理


1. 镜像打版本标签


禁止只用 latest,统一版本:app:v1.0


2. 旧版本镜像定时清理


脚本自动删除 7 天前无用镜像


3. 私有仓库统一托管


本地只保留运行中镜像,其余推送 Harbor/Registry,本地不囤积


4. 镜像压缩导出


# 导出压缩镜像

docker save 镜像名 | gzip > app.tar.gz

# 导入

docker load < app.tar.gz


六、容器数据存储优化(避免磁盘爆满)


1. 禁止把业务数据存在容器读写层


容器删数据丢,还占宿主机空间


2. 优先使用数据卷 volume 持久化


docker run -v /宿主机目录:/容器目录


3. 日志限制(防止日志打爆磁盘)


daemon.json 全局限制容器日志大小


{

  "log-driver":"json-file",

  "log-opts":{

    "max-size":"500m",

    "max-file":"3"

  }

}


七、线上运维最佳实践


1. 构建镜像:轻量基镜 + 多阶段 + 合并指令 + 清缓存


2. 日常维护:每周执行 docker system prune


3. 磁盘告警:监控 /var/lib/docker 使用率


4. 镜像策略:只保留正在运行镜像,历史镜像仓库归档


5. 批量构建统一缓存,加速构建并减少冗余层


总结


1. 清垃圾:prune 清理悬空镜像、停止容器、缓存


2. 缩体积:alpine 轻量镜像 + 多阶段构建 + 合并 RUN


3. 控层数:减少无用只读层,利用分层共享


4. 管数据:数据卷分离,限制容器日志大小


5. 统一管理:私有仓库归档,本地不囤旧镜像

- END -
分享:
留言 留言 试用申请
产品咨询 产品咨询 硬件设备咨询
华北地区负责人:17340067106(毛经理)
华东地区负责人:17358670739(甘经理)
华南、华西地区负责人:19113907060(耿女士)
技术咨询 技术咨询 软件算法咨询
18982151213(刘先生)
微信在线客服 微信在线客服 在线客服
返回官网顶部 返回官网顶部 回到顶部
关闭窗口
产品订购
  • *

  • *

  • *

  • *

  • *