惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
博客园 - 司徒正美
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
Jina AI
Jina AI
GbyAI
GbyAI
Y
Y Combinator Blog
罗磊的独立博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
雷峰网
雷峰网
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
S
Secure Thoughts
博客园 - 三生石上(FineUI控件)
Cyberwarzone
Cyberwarzone
NISL@THU
NISL@THU
J
Java Code Geeks
C
Cisco Blogs
人人都是产品经理
人人都是产品经理
Webroot Blog
Webroot Blog
腾讯CDC
博客园 - 叶小钗
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Troy Hunt's Blog
AI
AI
L
LangChain Blog
Know Your Adversary
Know Your Adversary
T
Tenable Blog
M
MIT News - Artificial intelligence
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 最新话题
Hugging Face - Blog
Hugging Face - Blog
F
Full Disclosure
P
Proofpoint News Feed
AWS News Blog
AWS News Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
Security Archives - TechRepublic
Security Archives - TechRepublic
S
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
W
WeLiveSecurity
The Cloudflare Blog

博客园 - AlfredZhao

impdp 遇到 TSTZ Version 报错:ORA-39405 处理实践 数据乱成一锅粥,还能先做本体吗? SQL*Plus 执行中文 SQL 文件,如何避开乱码坑 Podman 报错:普通用户无法运行 rootless Podman 怎么办 语义层构建:企业级AI落地绕不开的关键 AI时代最扎心的真相:人类在打杂,AI在做决策 Win7老系统登录报错怎么解?PuTTY这次真能救急 Linux 主机防火墙如何同时开启 80 和 443? AI 编程变更记录:知识加工模块与博客工厂模块的状态重新定义 一篇搞定:用 curl 测试私有部署模型联通性 DBA除了修库,还能把经验变成更大的价值 RAG技术从1.0到4.0,系统为何越来越“会想” 生产环境里,为什么不建议把普通端口直接暴露到公网? ORACLE默默地搞了个免费的智能体工厂 GPT 省钱,不是别用最新模型,而是别浪费缓存 Docker 容器时区不对,`timedatectl` 不存在怎么办? AI 编程工作总结:从体验问题到模块能力建设 OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G? vi 删除指定范围的行,不用再反复按 dd AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 AI编程系列01:裸 API 账单场景下,如何自建 LLM 用量可视化看板 氛围编程实战系列:先规划清楚学习路径 入门:我的第一个Vibe Coding实践程序 Linux时区修改为CST 如何在Oracle Agent Factory中配置国内厂商的LLM? Oracle Deep Data Security (Deep Sec) 初体验 APEX实战第13篇:全套开发环境的本地配置与恢复实践 Codex 和 OpenClaw,到底差在哪? 微信对接OpenClaw的常见问题和解决方案 在群晖NAS上配置OpenClaw:一次踩坑后的保姆级教程(完整修订版) 用Docker安全驯服OpenClaw,并打通社交软件 RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling? 为什么 AI 服务器首选 Ubuntu?难道 OEL 和 RHEL 不香吗? APEX实战第12篇:Oracle APEX 工作区密码忘记了怎么办? AI开发者如何无痛部署Oracle AI Database 26ai环境 Oracle 26ai 本地通用版这次是真的来了 Docker 快速入门:手把手教你打包 Python 应用 APEX实战第11篇:图形界面轻松解锁工作区账户 APEX实战第10篇:手把手教你给APEX打补丁 APEX实战第9篇:手把手教你集成RAS轻松实现真正的数据安全 小白学AI开发01:创建第一个示例Agent LangChain、LangFlow、LangGraph:一文讲清三大 LLM 框架的定位与差异 使用 Oracle 官方 HR Demo 快速验证 RAS 功能(小白实战指南) Oracle RAS:AI时代企业数据安全核心 新版MOS(My Oracle Support)主要变化 APEX实战第8篇:ORDS连库报错574?一招根治用户过期问题 为什么 Iceberg 在数据湖领域这么火
原本3GB+ 的 Docker 镜像直接缩成500M
AlfredZhao · 2026-07-01 · via 博客园 - AlfredZhao

2026-07-01 22:02  AlfredZhao  阅读(20)  评论()    收藏  举报

笔者为了给客户提供体积更小的安装介质,使用 docker save 对几组镜像(在机器上加起来有 3.42GB)统一打包后再压缩,最后发现居然只有 500MB 左右,开始还以为是不是漏包了,结果排查发现这不是异常,反而说明这种打包方式是对的。

01 | 先看账面体积为什么会这么大

把这 5 个镜像在本地磁盘上的大小直接相加,大约是:

$$1.19\text{ GB} + 484\text{ MB} + 165\text{ MB} + 282\text{ MB} + 1.33\text{ GB} \approx 3.42\text{ GB}$$

也就是说,从“各自展开后分别占空间”的角度看,它们确实一共占了 3.42GB。

但这个数字只是“死板相加”的结果,并不等于打包后一定也要占这么大。因为 Docker 镜像本身就是按层组织的,统一导出时,重复内容不会傻乎乎地写很多遍。

02 | 为什么统一打包后能缩到 500MB 左右

① 相同基础层只会保留一次

从镜像列表看,像 dataclaw(1.19GB)和 viz-server(1.33GB)这类偏大的后端服务,很可能共享一部分厚重的基础层。

这意味着,当它们一起执行 docker save 时,重叠的那部分基础内容不会重复写入归档包,而是只保留一份。统一打包的价值,首先就体现在这里。

gzip 会继续把可压缩内容压小

镜像里除了基础系统文件,还会包含服务代码、前端静态资源,以及各种依赖包。

这些内容在磁盘上是展开状态,看起来体积很大;但进入 tar 后再经过 gzip 压缩,很多重复文件、重复结构和可压缩的二进制内容都会被进一步缩小。所以,最后从 3.42GB 变成 500MB 左右,并不夸张。

03 | 这份包是否完整

笔者环境中还有一个关键信息:docker.io/library/nginx latest 这张镜像,在之前的 manifest.json 中曾被标成 localhost/nginx:latest

但只要执行 docker save 时写的是 nginx:latest,并且实际已经成功抓到了对应镜像,那么这个名称差异本身不影响结果。它说明镜像已经被正常纳入打包内容。

所以,这个 dataclaw-all-images.tar.gz 体积只有 500MB 左右,并不代表少了东西,反而更像是一份去掉重复层、再经过压缩后的有效交付包。

关注我,和AI一起成长~