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

推荐订阅源

F
Full Disclosure
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
AI
AI
博客园 - Franky
博客园 - 叶小钗
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
U
Unit 42
C
Check Point Blog
美团技术团队
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
G
Google Developers Blog
腾讯CDC
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
H
Help Net Security
T
Threat Research - Cisco Blogs
T
Tenable Blog
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Threatpost
T
The Blog of Author Tim Ferriss
The Cloudflare Blog
Cyberwarzone
Cyberwarzone
Spread Privacy
Spread Privacy
K
Kaspersky official blog
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
Project Zero
Project Zero
C
CERT Recently Published Vulnerability Notes
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
T
Tor Project blog
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
PCI Perspectives
PCI Perspectives
P
Palo Alto Networks Blog
Webroot Blog
Webroot Blog
N
News | PayPal Newsroom
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 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一起成长~