首页主机资讯Docker在CentOS上的容器如何迁移

Docker在CentOS上的容器如何迁移

时间2025-12-06 00:18:03发布访客分类主机资讯浏览221
导读:Docker 在 CentOS 上的容器迁移指南 一、迁移方式总览与选择 镜像导出/导入(docker save/load):适合保留镜像层与历史,便于跨主机、跨环境部署,推荐作为常规方式。 容器导出/导入(docker export/i...

Docker 在 CentOS 上的容器迁移指南

一、迁移方式总览与选择

  • 镜像导出/导入(docker save/load):适合保留镜像层与历史,便于跨主机、跨环境部署,推荐作为常规方式。
  • 容器导出/导入(docker export/import):将容器当前文件系统导出为镜像,导入后是“扁平镜像”,不会保留历史层、端口映射、环境变量、卷等运行态配置,适合一次性快照迁移。
  • 数据卷备份与恢复:容器/镜像迁移不包含数据卷,需单独备份与恢复(如 tar 打包挂载卷数据)。
  • Docker Compose:将应用及依赖(镜像、端口、卷、网络)以声明式文件管理,最利于复现与迁移。
  • 整库迁移(/var/lib/docker):直接拷贝 Docker 数据目录,风险高,仅在版本兼容且停机窗口充足时考虑。

二、标准流程 镜像导出导入(推荐)

  • 在源主机(CentOS)
    1. 查看并确认容器与镜像
      • 查看容器:docker ps -a
      • 查看镜像:docker images
    2. 若需从运行中容器生成新镜像:docker commit < 容器ID或名> < 镜像名> :< 标签>
    3. 导出镜像:docker save -o < 镜像名> .tar < 镜像名> :< 标签>
    4. 传输镜像包:scp < 镜像名> .tar < 目标主机> :/tmp/
  • 在目标主机(CentOS)
    1. 导入镜像:docker load -i /tmp/< 镜像名> .tar
    2. 依据原容器参数启动(示例):
      • docker run -d --name < 新容器名> -p < 主机端口> :< 容器端口> -v < 卷名或宿主机路径> :< 容器内路径> < 镜像名> :< 标签>
        说明:镜像方式便于在不同主机间复现一致的运行环境,且可配合卷单独迁移数据。

三、容器导出导入与数据卷迁移(export/import)

  • 容器导出/导入(不保留运行态配置)
    • 源主机:
      • 停止容器:docker stop < 容器名>
      • 导出:docker export < 容器名> | gzip > < 容器名> .tar.gz
    • 目标主机:
      • 导入:zcat < 容器名> .tar.gz | docker import - < 镜像名> :< 标签>
      • 启动:docker run -d --name < 新容器名> < 镜像名> :< 标签>
    • 注意:此方法不会携带端口、环境变量、卷等配置,需要在启动时手动补齐。
  • 数据卷备份与恢复(关键数据单独迁移)
    • 备份卷(示例卷名为 my_volume):
      • docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data
    • 将 backup.tar 传到目标主机后恢复:
      • 目标先创建同名卷:docker volume create my_volume
      • 恢复:docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar -C /data
        说明:export/import 适合“快照式”迁移;任何持久化数据务必用卷单独备份与恢复。

四、批量迁移与编排迁移

  • 使用 Docker Compose(最利于复现与迁移)
    • 源主机生成 compose 文件(可从现有容器/镜像信息整理):
      • 示例 compose 片段:
        version: '3.8'
        services:
          web:
            image: myapp:latest
            ports:
              - "80:80"
            volumes:
              - my_volume:/data
        volumes:
          my_volume:
        
    • 将 compose 文件与镜像一并传到目标主机(镜像可用 docker save/load 预加载)
    • 目标主机启动:docker-compose up -d
      说明:Compose 将镜像、端口、卷、网络等收敛为一份可版本化的配置,适合多容器应用的一键迁移与复现。

五、注意事项与常见问题

  • 数据卷不会随镜像/容器迁移:务必单独备份与恢复卷数据(见第三部分)。
  • export 与 save 的差异:export 生成“扁平镜像”,丢失历史层与运行态配置;save/load 保留镜像层与历史,更适合迁移与复用。
  • 整库拷贝风险:直接迁移 /var/lib/docker 需停机、版本兼容、权限一致,失败影响大,非必要不建议采用。
  • 网络与端口:跨主机需确保目标端口未被占用,必要时调整 -p 映射;如使用自定义网络,需在目标主机重建同名网络。
  • 验证:迁移后执行 docker psdocker logs、业务自检,确认服务可用与数据完整。

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


若转载请注明出处: Docker在CentOS上的容器如何迁移
本文地址: https://pptw.com/jishu/765319.html
如何配置CentOS PHP-FPM CentOS下Docker网络故障如何排查

游客 回复需填写必要信息