Debian Docker如何迁移容器
导读:Debian 下迁移 Docker 容器的常用方案 离线迁移(最稳妥):将容器变更提交为镜像,使用 docker save/load 或推送到 Registry;同时单独迁移卷数据。适合生产环境、跨版本/跨架构部署。 离线迁移(仅文件系统...
Debian 下迁移 Docker 容器的常用方案
- 离线迁移(最稳妥):将容器变更提交为镜像,使用 docker save/load 或推送到 Registry;同时单独迁移卷数据。适合生产环境、跨版本/跨架构部署。
- 离线迁移(仅文件系统):使用 docker export/import 生成新镜像并重建容器;注意会丢失镜像层历史与部分配置。
- 热迁移(不停机):基于 CRIU 的实验性检查点与恢复;仅特定场景可用,官方不建议上生产。
- 整机迁移:复制 /var/lib/docker 目录;要求版本兼容、停机窗口与严格校验,风险较高。
标准流程 镜像与卷迁移(推荐)
- 在源主机提交容器为镜像
- 将运行中容器的当前状态固化为新镜像:
docker commit < 容器名或ID> < 新镜像名> :< 标签> - 示例:docker commit webapp webapp:v2
- 传输镜像到目标主机
- 方式 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
- 迁移数据卷(关键!镜像/容器导出不会包含卷)
- 备份卷到本地归档:
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
- 在目标主机用原参数重建并启动容器
- 建议用 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
