Docker在CentOS上的容器如何迁移
导读:Docker 在 CentOS 上的容器迁移指南 一、迁移方式总览与选择 镜像导出/导入(docker save/load):适合保留镜像层与历史,便于跨主机、跨环境部署,推荐作为常规方式。 容器导出/导入(docker export/i...
Docker 在 CentOS 上的容器迁移指南
一、迁移方式总览与选择
- 镜像导出/导入(docker save/load):适合保留镜像层与历史,便于跨主机、跨环境部署,推荐作为常规方式。
- 容器导出/导入(docker export/import):将容器当前文件系统导出为镜像,导入后是“扁平镜像”,不会保留历史层、端口映射、环境变量、卷等运行态配置,适合一次性快照迁移。
- 数据卷备份与恢复:容器/镜像迁移不包含数据卷,需单独备份与恢复(如 tar 打包挂载卷数据)。
- Docker Compose:将应用及依赖(镜像、端口、卷、网络)以声明式文件管理,最利于复现与迁移。
- 整库迁移(/var/lib/docker):直接拷贝 Docker 数据目录,风险高,仅在版本兼容且停机窗口充足时考虑。
二、标准流程 镜像导出导入(推荐)
- 在源主机(CentOS)
- 查看并确认容器与镜像
- 查看容器:
docker ps -a - 查看镜像:
docker images
- 查看容器:
- 若需从运行中容器生成新镜像:
docker commit < 容器ID或名> < 镜像名> :< 标签> - 导出镜像:
docker save -o < 镜像名> .tar < 镜像名> :< 标签> - 传输镜像包:
scp < 镜像名> .tar < 目标主机> :/tmp/
- 查看并确认容器与镜像
- 在目标主机(CentOS)
- 导入镜像:
docker load -i /tmp/< 镜像名> .tar - 依据原容器参数启动(示例):
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 适合“快照式”迁移;任何持久化数据务必用卷单独备份与恢复。
- 目标先创建同名卷:
- 备份卷(示例卷名为 my_volume):
四、批量迁移与编排迁移
- 使用 Docker Compose(最利于复现与迁移)
- 源主机生成 compose 文件(可从现有容器/镜像信息整理):
- 示例 compose 片段:
version: '3.8' services: web: image: myapp:latest ports: - "80:80" volumes: - my_volume:/data volumes: my_volume:
- 示例 compose 片段:
- 将 compose 文件与镜像一并传到目标主机(镜像可用
docker save/load预加载) - 目标主机启动:
docker-compose up -d
说明:Compose 将镜像、端口、卷、网络等收敛为一份可版本化的配置,适合多容器应用的一键迁移与复现。
- 源主机生成 compose 文件(可从现有容器/镜像信息整理):
五、注意事项与常见问题
- 数据卷不会随镜像/容器迁移:务必单独备份与恢复卷数据(见第三部分)。
- export 与 save 的差异:export 生成“扁平镜像”,丢失历史层与运行态配置;save/load 保留镜像层与历史,更适合迁移与复用。
- 整库拷贝风险:直接迁移 /var/lib/docker 需停机、版本兼容、权限一致,失败影响大,非必要不建议采用。
- 网络与端口:跨主机需确保目标端口未被占用,必要时调整
-p映射;如使用自定义网络,需在目标主机重建同名网络。 - 验证:迁移后执行
docker ps、docker logs、业务自检,确认服务可用与数据完整。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在CentOS上的容器如何迁移
本文地址: https://pptw.com/jishu/765319.html
