镜像升级与发布流程
约 782 字大约 3 分钟
Docker镜像发布升级
2026-03-20
1. 先固定版本,不要直接依赖 latest
无论是第三方服务镜像,还是自己构建的业务镜像,都尽量使用明确版本号,而不是长期依赖 latest。
例如:
services:
app:
image: nginx:1.27.4这样做的好处是:
- 可以明确知道当前线上跑的是哪个版本。
- 可以复现问题。
- 升级失败时更容易回滚。
一个更实用的习惯是同时维护两类标签:
- 面向人阅读的版本号标签,例如
1.24.6。 - 面向追溯的构建标签,例如
2026-03-20-abc123。
2. 推荐的升级节奏
比较稳妥的做法是按固定节奏升级,而不是每次看到新版本就立即上生产。
一个常见节奏是:
- 先在测试环境验证新镜像。
- 再在低风险环境灰度。
- 最后安排生产窗口切换。
对基础设施类组件,可以按月或按季度评估升级;对高风险组件,则应该结合安全公告和业务窗口单独判断。
3. 不要总追 latest
latest 最大的问题不是新,而是不可控。
常见风险包括:
- 上游镜像覆盖了原标签,导致重新部署结果变化。
- 镜像内部默认配置改变,引发兼容性问题。
- 回滚时无法准确定位原来的工作版本。
如果确实需要自动构建最新版本,也建议额外保留带日期或提交号的标签。
4. 升级后的检查项
镜像升级完成后,不要只看容器是否启动成功,至少补以下检查:
docker ps确认容器状态正常。docker logs检查启动期是否有异常。- 对外端口和页面是否可访问。
- 关键业务接口或核心操作是否正常。
- 数据读写、定时任务、上传下载等关键链路是否正常。
5. 回滚策略
升级前最好就准备好回滚方案,至少包括:
- 保留旧镜像标签。
- 保留升级前的 compose 文件和配置版本。
- 如果涉及数据迁移,提前确认是否支持回滚。
- 在升级前先完成一次可恢复的备份,相关说明见 11.备份与恢复策略。
一个最小回滚动作可以是:
docker compose down
docker compose pull
docker compose up -d前提是 compose 文件已经切回旧镜像标签。
6. 发布流程建议
如果要把流程做得更稳,建议把下面几项固定下来:
- 构建镜像时写明版本号、构建时间和 Git 提交号。
- 发布前记录本次变更内容和影响范围。
- 发布后记录实际生效版本。
- 把回滚命令和恢复入口提前写进发布文档。
- 在正式切换前先执行一次
docker compose config,确认 Compose 配置能被正确解析。