章节摘要:本章跟着一条线走——一只箱子从起吊到送离的完整在船周期。你将掌握创建、启动、停止、暂停、销毁的全套动作,学会进入箱子作业、读懂它的日志与体征,并在最后给每只箱子核定载重——资源配额。
车间毕业的你,现在站上甲板。主线任务很具体:负责一只箱子从起吊到送离的全过程值班。值班员要会的远不止起吊和拆箱——你得知道箱子什么时候在干活、什么时候在装睡、怎么钻进去检修、它的作业记录在哪里、吃水线有没有超载。本章五节就是值班手册的五个部分。
先看全程的状态流转图,它是本章的地图:
注意图里两个容易混淆的细节:stop 之后箱子还在(Stopped 状态可复航),rm 之后才真正消失;还有 run 是 create 加 start 的合并写法,日常几乎只用 run。
值班手册第一页:run 命令的完整参数体系——前台与后台、命名、端口、环境变量、挂载、重启策略。这一站讲清"主进程决定容器生死"的核心规则,它是理解一切状态问题的钥匙。
四个动词的精确语义与正确顺序:stop 的宽限期设计、restart 的两种场景、pause 与 stop 的本质区别(冻结进程与终止进程)、rm 与 rm -f 的适用边界。这一站替你避免"强拆成瘾"的坏习惯。
钻进箱子检修的两条路:exec 开新会话(首选)与 attach 接原会话(慎用)。这一站讲清两者的机制差异——为什么 attach 里按退出键会把容器带走,而 exec 不会。
值班员的眼睛:logs 的跟踪与时间过滤、stats 的实时体征、top 的进程明细。这一站教你从"能看"到"会判"——什么样的日志模式说明应用有问题,什么样的 CPU 曲线说明容器在空转。
值班手册最后一页:给每只箱子核定载重。内存上限、CPU 份额、重启策略的联动,以及"邻居效应"——没有配额的世界里,一只失控的箱子能拖垮整条船。这一站是从玩具到生产的必经门槛。
五节顺序就是值班手册的目录顺序,唯一可以灵活的是 4.5:如果你的练习机上已经同时跑着多个容器,不妨先读配额一节再回头补中间——演习环境先稳当,练手才不翻车。
本章最重要的认知转折在 4.1:容器不是小型服务器,而是一个被限制视野的进程。它的生是主进程的生,它的死是主进程的死——"容器还活着但应用挂了"(僵尸箱)与"容器秒退"(主进程无活可干)这两大新手迷案,都由这条规则直接解释。理解了它,你再看 4.4 的监控就有了抓手:监控容器,本质是监控主进程与它的资源账本。
第二个转折在 4.5:默认无配额是便利也是隐患。单机学习时无配额让你省心,共船生产时无配额等于把整条船的安全押在每只箱子的自觉上。cgroups 是内核早就提供的载重核定机制,Docker 只是用两个参数把它递到你手边。
本章落点一句话:值班员的全部职责 = 管好状态流转 + 看住体征日志 + 核定资源载重。这三件事做扎实,你的容器才算真正"在运营"而不是"在运行"。
箱子会吊了、会看了、会管了,还差两样基础生产资料:航道(网络)与堆场(存储)。一只孤箱跑不出现代应用,下一章讲容器怎么互相找到对方、数据怎么比容器活得更久——那是把单机玩具组建成系统的前夜。