技术与生活 / 一篇记录
更新前保留旧镜像,为什么仍然回不去?
程序升级可能同时修改数据库结构和持久文件格式。旧镜像能启动,不代表它仍能理解新数据,因此应用版本与数据版本需要作为一个整体考虑。
更新涉及镜像、配置和数据三个部分,单独保留旧镜像不足以应对迁移。
实际怎么检查
容器名与镜像名仅作示例;操作前先确认目标对象,不直接对不明数据执行清理。
docker compose images
记录当前镜像摘要,并在升级前验证数据库备份。
遇到异常再检查什么
记录当前摘要并备份配置、数据库,再检查迁移说明。真正回退时先在隔离环境验证,避免让旧程序直接尝试写入已经迁移过的新数据。
发布前记录恢复顺序同样重要。配置、数据库与应用版本有依赖关系时,随意先回退其中一个可能让故障扩大。把恢复步骤写成可验证动作,能降低紧急情况下的判断成本。
数据库升级后可能无法直接用旧程序读取新结构。
参考:Docker 文档。