第3章 装箱车间:镜像分层与构建


第3章 · 装箱车间:镜像分层与构建

章节摘要:本章跟着一条线走——把你自己的应用从"一堆代码"装箱成"一只标准箱",中途拆开看分层原理、学写装箱单、给箱子减重,最后给自己的货物建一座专属堆场。这是从"用容器"到"交付容器"的分水岭。

一条主线

前两章你提的货都是别人装好的箱子。从本章起,你在车间里有了一自己的工位:把你自己的应用装进标准箱,并且装得又快又省又规范。

主线任务围绕一次真实装箱展开:假设手里有一个依赖若干库的 Web 应用,目标是产出一个体积小、可复现、能直接推上堆场的镜像。要完成它,五个站点依次过:

每一站都直接服务于主线任务:不懂分层就写不出高效装箱单;不懂货单规则就无法与堆场顺畅往来;装箱单写法是核心手艺;减重是专业与业余的分界线;专属堆场则让你的成品有了正式的存放与分发渠道。

补一条车间守则:本章所有练习共用同一个样例应用——从 3.3 写出第一版装箱单,到 3.4 把它瘦身,再到 3.5 推上自建堆场,一票货从头走到尾。中途不要换货,前后对比才看得清每一步改进到底改在哪里。

沿途站点

3.1 镜像分层存储与联合文件系统

拆开一只现成的箱子:镜像由只读层堆叠而成,容器只是最上面多出的一层可写层。这一站用 history 与 inspect 命令亲眼看分层,理解层共享为什么让存储与传输都高效。这是全章的理论地基。

3.2 镜像的获取、查找与远近场管理

把 2.3 的入门操作升级成体系:标签策略、内容摘要、多堆场之间的推拉规则,以及官方堆场与企业内网堆场的分工。这一站让你在任何网络环境下都能管理自己的货。

3.3 Dockerfile 指令详解:装箱单写法

核心手艺站。逐条讲透 FROM、RUN、COPY、CMD、ENTRYPOINT 等指令的语义与陷阱,重点讲指令顺序如何影响层缓存——写对了,重复构建快十倍。这一站结束,你能为任意应用写出合格的装箱单。

3.4 多阶段构建与镜像瘦身

业余与专业的分界线。同一个应用,随手装出来几百 MB,用心装箱只有几十 MB。这一站用前后对比实验讲多阶段构建、轻量基础镜像与清理技巧,产出一份可执行的瘦身清单。

3.5 自建私有堆场:Registry 搭建

主线收官。用官方 registry 镜像十分钟搭起企业内网专属堆场,配置访问控制,打通 push 与 pull。从此你的镜像有了一个不依赖外网的正式家。

拐点与结论

本章最重要的认知转折在 3.1 到 3.3 之间:Dockerfile 不是"安装脚本",而是"层的声明序列"。脚本思维关心"执行了哪些命令",层思维关心"每条指令制造了多大多不可变的层、缓存何时失效"。想通这一点,很多最佳实践不再是需要背诵的教条,而是自然推论——比如为什么先 COPY 清单文件再装依赖、为什么把变动最频繁的指令放最后、为什么一行 RUN 里用完即清。

第二个转折在 3.4:镜像体积不是"压缩"问题,而是"层里装了什么"的问题。删除文件的指令不会让下面的层变小,只会多一层"删除记录";真正的瘦身靠多阶段构建把"生产废料"(编译器、缓存、临时文件)留在车间,只把成品装进终箱。

本章落点一句话:镜像 = 分层的不可变交付物,Dockerfile = 对每一层的可审计声明。写出好装箱单的人,交付质量下限立刻高一档。

动手预算提醒:本章练习会真实地下载基础镜像与依赖(首次约几百 MB 流量),建议在稳定网络下进行;3.5 节自建堆场需要约 100 MB 磁盘余量,做完记得按文中步骤清理演习用的容器与卷。

读完你应该

  1. 用 history 与 inspect 解释任意镜像的分层构成,说出可写层与只读层的区别。
  2. 说出标签与内容摘要的可靠性差异,并在生产场景选择正确的引用方式。
  3. 独立编写带层缓存优化的 Dockerfile,并解释每条指令的层效应。
  4. 用多阶段构建把一个编译型应用镜像瘦身到原来的四分之一以下,列出瘦身依据。
  5. 搭建私有堆场并完成一次 push 与 pull 的闭环,配置基本的访问控制。

下一章的接力

箱子装好了、瘦了身、上了堆场,就差起吊了。第 4 章进入起吊作业:容器的创建、启动、停止与销毁,以及监控它的一切——那些在车间里看不见的运行时故事,都在船上。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U