开场白

虚拟机太重了:一次部署要五分钟

全部 · 容器家族树地图 老周带小陈从“部署太慢”开始,走进容器世界

云间书店的虚拟化改造完成之后,服务器稳了,但小陈又发现了新问题。

"师傅,现在加一个新服务太难了!"小陈抱怨,"我要给网店加一个'直播带货'模块——从前端、后端、数据库、缓存到定时任务,一共 5 个组件。按咱们现在的方式:先申请 VM、装系统、配环境、装依赖、部署代码、调网络……一个组件一套流程,没有两小时搞不定。"

老周站在旁边:"那你知道为什么慢吗?"

"因为 VM 太重了!"小陈说,"一台 VM 装一个操作系统,光是 OS 就要占几个 G,启动要几十秒,还得装一堆用不到的软件。"

"对。"老周说,"虚拟机解决了'一台物理机只能跑一个系统'的问题,但代价是——每一台 VM 都背着一个完整的操作系统。 我们只是想让几个应用跑起来,却要为每个应用买'一整套电脑'。这就引出了一个新的问题:能不能只隔离'应用',而不隔离'操作系统'?"

"答案,就是今天的主角——Docker 容器。"


一张给容器小白的地图

老周在白板上画出第四棵家族树(云间书店系列的第五棵):

第十二层:云原生生态 ── 服务网格 · Serverless · 可观测性 · 云原生
第十一层:安全与最佳实践 ── 镜像扫描 · 资源限制 · 最小权限 · 加固
第十层:CI/CD 容器化交付 ── 构建流水线 · 镜像仓库 · 自动部署
第九层:Kubernetes 进阶 ── 调度 · 弹性伸缩(HPA) · 配置管理 · 存储
第八层:Kubernetes 入门 ── Pod · Deployment · Service · Namespace
第七层:镜像仓库 ── Registry · Harbor · 镜像分层 · 镜像安全
第六层:编排 ── docker-compose · 多容器 · 服务依赖
第五层:容器网络 ── bridge/host/none · 端口映射 · 容器互联
第四层:数据管理 ── 数据卷(Volume) · 绑定挂载 · tmpfs
第三层:容器生命周期 ── run/start/stop · exec · 日志 · 资源限制
第二层:镜像 Image ── Dockerfile · 分层 · 联合文件系统 · 构建
第一层:容器基础 ── 容器 vs 虚拟机 · Namespace · Cgroup · 镜像/容器/仓库
根:为什么需要容器?── 虚拟机太重,部署太慢,环境不一致

"记住这张图的一句话:容器的本质,是'轻量级、可移植、自包含'的应用运行环境——把应用和它的所有依赖打包在一起,到哪里都能跑。"

"越往上,越从'单个容器'走向'一群容器':从把一个应用打包(第二层),到管它的数据、网络(第四、五层),到编排一群容器(第六层),到让容器集群自己调度、自己扩容(第八、九层),再到自动化交付和云原生生态(第十到十二层)。"

小陈看着图:"师傅,那我们从哪层开始?"

"从根开始。"老周说,"先搞明白一个最根本的问题:为什么虚拟机不够用,还需要容器? 你刚才抱怨的'部署一次要两小时',就是最好的教材。走,第一章,我们把虚拟机按在地上摩擦一下。"


本系列目录

章节 标题 对应容器概念层 云间书店的故事
第一章 为什么需要容器 部署一次直播带货模块要两小时
第二章 镜像与容器:图纸和实物 第一层 第一次跑起 hello world 容器
第三章 Dockerfile:把应用装进集装箱 第二层 把直播模块打包成镜像
第四章 容器生命周期:生老病死 第三层 容器说没就没,日志去哪了
第五章 数据卷:容器里的数据会消失 第四层 容器删了,数据库数据还在吗
第六章 容器网络:让容器互相说话 第五层 前端容器怎么找到后端容器
第七章 docker-compose:一键启动全家桶 第六层 一条命令拉起整个书店系统
第八章 镜像仓库与安全 第七层 镜像从哪来,靠不靠谱
第九章 Kubernetes 入门 第八层 + 第九层 容器多了,谁来管它们
第十章 CI/CD 容器化交付 第十层 提交代码自动打包上线
第十一章 安全与云原生生态 第十一层 + 第十二层 容器时代的安全与未来
终章 问题对照表与总结 全部 小陈的容器工程师考试

写给读者:这一系列继续云间书店的故事,紧接着 VMware 虚拟化那一季。故事里的 Docker 命令、docker-compose、Kubernetes 概念都是真实可用的——建议跟着小陈一起在电脑上敲命令,亲手把容器跑起来、删掉、再跑起来。容器这东西,不亲手折腾一遍,永远学不会。 老周在第一章等你。

✌ 语言