宿主机负责正式运行 Java 服务最终仍由 systemd 管理,监听固定的 48080 ,不改变现有 Nginx 配置。 Docker 只负责制作 CRaC 快照 新 JAR 在容器内冷启动、完成健康检查和预热,然后创建 checkpoint 。容器内部仍使用 48080 ,宿主机映射随机端口,所以不会和线上服务冲突。 容器和宿主机使用相同路径 统一挂载: /opt/app-server/app-server.jar /opt/app-server/zulu25-crac /opt/app-server/crac/checkpoint 避免恢复时出现 JDK 、JAR 或快照路径不一致。 外部服务使用统一可达地址 MySQL 、Redis 、TDengine 等从 127.0.0.1 改成 172.17.0.1 ,保证容器制作快照和宿主机恢复后都能连接。 快照成功后再切换 Docker checkpoint 成功之前,旧服务继续运行。成功后才停止旧进程、替换 JAR 和快照,再由 systemd 从 checkpoint 快速恢复。 实测启动时间从 2 分钟压到了...