首页主机资讯Debian Docker如何迁移容器

Debian Docker如何迁移容器

时间2025-11-27 09:21:04发布访客分类主机资讯浏览1247
导读:Debian 下迁移 Docker 容器的常用方案 离线迁移(最稳妥):将容器变更提交为镜像,使用 docker save/load 或推送到 Registry;同时单独迁移卷数据。适合生产环境、跨版本/跨架构部署。 离线迁移(仅文件系统...

Debian 下迁移 Docker 容器的常用方案

  • 离线迁移(最稳妥):将容器变更提交为镜像,使用 docker save/load 或推送到 Registry;同时单独迁移卷数据。适合生产环境、跨版本/跨架构部署。
  • 离线迁移(仅文件系统):使用 docker export/import 生成新镜像并重建容器;注意会丢失镜像层历史与部分配置。
  • 热迁移(不停机):基于 CRIU 的实验性检查点与恢复;仅特定场景可用,官方不建议上生产。
  • 整机迁移:复制 /var/lib/docker 目录;要求版本兼容、停机窗口与严格校验,风险较高。

标准流程 镜像与卷迁移(推荐)

  1. 在源主机提交容器为镜像
  • 将运行中容器的当前状态固化为新镜像:
    docker commit < 容器名或ID> < 新镜像名> :< 标签>
  • 示例:docker commit webapp webapp:v2
  1. 传输镜像到目标主机
  • 方式 A(手动拷贝):
    docker save -o webapp_v2.tar webapp:v2
    scp webapp_v2.tar user@目标主机:/tmp

    在目标主机

    docker load -i /tmp/webapp_v2.tar
  • 方式 B(Registry):
    docker tag webapp:v2 < 仓库> /webapp:v2
    docker push < 仓库> /webapp:v2

    在目标主机

    docker pull < 仓库> /webapp:v2
  1. 迁移数据卷(关键!镜像/容器导出不会包含卷)
  • 备份卷到本地归档:
    docker run --rm -v < 卷名> :/data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data
  • 在目标主机恢复卷:
    docker volume create < 卷名>
    docker run --rm -v < 卷名> :/data -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar -C /data
  1. 在目标主机用原参数重建并启动容器
  • 建议用 Docker Compose 管理端口、环境变量、卷挂载等,保证一致性:
    version: “3.8”
    services:
    web:
    image: webapp:v2
    ports:
    - “80:80”
    volumes:
    - < 卷名> :/data
  • 启动:docker-compose up -d(或 docker run 逐项还原参数)

仅文件系统迁移 export/import 的要点

  • 导出容器文件系统:
    docker export -o mycontainer.tar < 容器ID>
  • 导入为全新镜像(会丢失历史层与部分元数据):
    docker import mycontainer.tar < 镜像名> :< 标签>
  • 限制与风险:
    • 不会保留 CMD/ENTRYPOINT/ENV/EXPOSE/端口映射 等配置,需在 import 时显式补充或通过 Dockerfile/Compose 重建。
    • 导出包可能包含运行时临时文件(如 /tmp 锁文件),建议在导入前检查并清理,避免影响启动。

热迁移与整机迁移的取舍

  • 热迁移(CRIU,实验性)
    • 适用:需要尽量不停机的场景。
    • 要点:
      • Debian 上启用 Docker 实验特性并安装 CRIU,对容器创建检查点(checkpoint),在目标主机恢复(restore)。
      • 官方提示该功能为实验性,不建议用于生产环境
    • 参考命令:
      • 开启实验特性:在 /etc/docker/daemon.json 添加 { “experimental”: true} 并重启 Docker。
      • 创建检查点:docker checkpoint create --leave-running=false mydebian testCheck
      • 从检查点启动:docker start --checkpoint testCheck mydebian
      • 清理检查点:docker checkpoint rm mydebian testCheck
  • 整机迁移(复制 /var/lib/docker)
    • 适用:需要一次性迁移大量镜像/容器/卷。
    • 要点:停机、版本兼容、权限/所有权一致、校验迁移结果;风险高,优先选择镜像+卷的拆分迁移。

迁移前后校验清单

  • 镜像与标签一致:docker images | grep < 镜像名> ;必要时 docker tag 修正。
  • 容器启动参数一致:对比 docker inspect < 容器名> 的 Cmd/Entrypoint/Env/ExposedPorts/Volumes
  • 卷数据完整:在容器内校验关键数据文件/目录是否存在且权限正确。
  • 网络与端口:确认端口映射、网络模式(bridge/custom)与目标主机策略一致。
  • 日志与业务状态:核对关键日志与业务功能可用性,必要时回放部分日志以验证。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian Docker如何迁移容器
本文地址: https://pptw.com/jishu/757583.html
Debian Minimal的启动速度有多快 C++ Linux系统中如何进行安全防护

游客 回复需填写必要信息