容器 36:同一 digest 怎样交付并安全回退
固定制品,不固定假设
附件中的 `compose.yaml` 要求 `PROBE_IMAGE` 是实际 `repo@sha256:...`,把仅属于实验的 volume 挂到探针 state-dir,限制发布端口为本机 loopback;Kubernetes 则需在专用集群部署同 digest 的 Deployment/Service,并明确 storage/NetworkPolicy 和探针版本。运行两侧 `/identity` 与 `/state`,可追踪到真正服务该请求的 Pod UID/容器 ID/PID,而不只是 YAML 的 image 字段。正例先部署已验证版本,记录 digest、配置和合成状态文本,再将应用或配置换成已知坏版本,在专用环境观测失败并按明确回退动作恢复旧 digest 与请求;负例是回退了容器镜像但数据 schema 已被前一版不可逆地改变,服务仍可能失败。因此回退验收必须同时看配置、卷数据兼容性和真实请求,而不是只看“rollout undo 成功”。复跑入口和数据边界要求只清理自己创建的 Compose project/namespace 与卷;本机无 Docker/kind/实际 digest,交付与回退均 NOT_RUN,Compose 静态结构不是服务上线证明。
| 现象 | 核查 | 不能推出 |
|---|---|---|
| YAML 的 image 是旧 digest | 实际容器镜像 digest | 数据已回滚 |
| rollout 成功 | Pod Ready 和真实请求 | 业务成功 |
| 两端 digest 一样 | 配置、卷和网络路径 | 行为必然相同 |
练习
- 先预测容器镜像回退、但测试卷内容被坏版本修改后
/state结果,专用环境留合成数据对照及备份恢复步骤。 - 预测 Compose 与 Kubernetes 同 digest 的 Pod/容器是否拥有同一端口入口,实际读取监听、路由、endpoint 与 HTTP 返回。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.




