1. 容器迁移概述

1.1 容器迁移的定义

容器迁移是指将运行中的 Docker 容器实例及其关联的存储卷、网络配置、环境变量和运行时状态,从一个宿主机节点完整地转移到另一个宿主机节点的过程。与传统的虚拟机迁移不同,容器迁移更轻量、启动更快,但面临共享内核、命名空间隔离和存储卷挂载等特殊挑战。

核心迁移对象: 容器文件系统(分层镜像 + 可写层)、内存状态(进程、网络连接、文件描述符)、存储卷挂载点、网络命名空间配置。

1.2 容器迁移 vs. 容器重启

对比维度 容器迁移 容器重启
操作本质 将运行态容器完整复制到新节点 在本地停止并重新启动容器进程
IP/网络状态 可保留或重新分配 IP 通常重新分配 IP
内存数据 支持 checkpoint/restore 保留内存 内存数据全部丢失
宿主机依赖 需要目标节点预拉取镜像 无跨节点依赖
典型场景 数据中心迁移、灾备切换 配置更新、故障恢复
停机时间 秒级~分钟级(取决于数据量) 毫秒级~秒级
关键区别: 重启是“原地销毁并重建”,迁移是“跨节点复制并保持运行连续性”。迁移的核心价值在于 不中断服务 或 极短中断 的前提下改变容器运行位置。

1.3 容器迁移的典型应用场景

场景一:数据中心迁移

  • 物理机下架/升级: 将运行中的容器从即将退役的宿主机平滑迁移到新硬件。
  • 资源均衡: 当某节点 CPU/内存利用率超过阈值时,将部分容器迁移到低负载节点。
  • 机房搬迁: 跨集群、跨地域的数据中心整体迁移,要求容器保持运行状态。

场景二:混合云灾备

  • 主备切换: 当私有云集群出现大面积故障时,将关键业务容器迁移到公有云备用集群。
  • 异地容灾: 通过异步迁移将容器状态定期同步到异地灾备中心,实现 RPO(恢复点目标)分钟级。
  • 流量突增: 将部分无状态容器迁移到云端弹性节点,实现混合云弹性伸缩。

场景三:边缘计算

  • 边缘节点漂移: 当边缘设备负载过高或即将离线时,将容器迁移到相邻边缘节点。
  • 车联网/物联网: 车辆或移动设备上的容器随位置变化迁移到最近的边缘网关。
  • 断网续传: 边缘节点离线期间容器继续运行,恢复网络后迁移回中心集群。
注意: 边缘场景下网络带宽有限、延迟较高,异步迁移策略(先传文件系统差异层,再传内存 checkpoint)比同步迁移更适用。

1.4 容器迁移的核心流程

一次完整的容器迁移通常包含以下五个阶段:

  1. 预检查: 验证目标节点资源(CPU、内存、磁盘)、镜像版本、网络连通性。
  2. 镜像同步: 将容器镜像的缺失层推送到目标节点(支持增量同步)。
  3. 数据卷同步: 使用 rsync 或分布式存储快照同步持久化数据。
  4. Checkpoint(检查点): 冻结容器进程,导出内存状态和文件系统快照。
  5. Restore(恢复): 在目标节点加载 checkpoint,恢复容器运行。
容器迁移核心流程 ① 预检查 ② 镜像同步 ③ 数据卷同步 ④ Checkpoint ⑤ Restore 迁移关键指标 RTO(恢复时间目标):从 Checkpoint 到 Restore 完成的时间 RPO(恢复点目标):最后一次 Checkpoint 与故障发生之间的数据丢失量 异步迁移:先传镜像层 再传 Checkpoint 异步迁移:镜像层提前同步 → 业务几乎无感知

1.5 迁移策略选型要点

策略 适用场景 优势 劣势
冷迁移 非关键业务、计划内维护 实现简单,无需 checkpoint 服务中断时间长
热迁移(同步) 关键业务、零停机要求 RTO < 1s 对网络带宽要求高
异步迁移 混合云灾备、边缘计算 容忍网络抖动,带宽利用率高 RPO 分钟级,存在数据窗口