上一篇 下一篇 分享链接 返回 返回顶部

容器批量迁移服务器实操流程

发布人: 发布时间:2 天前 阅读量:8

一、迁移前准备

在开始容器批量迁移前,需完成以下准备:

  • 环境检查:确认源服务器与目标服务器操作系统、容器运行时(如Docker、containerd)版本兼容。
  • 存储规划:确保目标服务器有足够磁盘空间存放镜像和持久化数据,建议预留迁移数据量20%的余量。
  • 网络配置:开通源与目标之间的数据传输端口(如22/tcp、2375/tcp),若使用SSH或HTTP传输需确保策略放通。
  • 工具安装:在源服务器安装 docker save/loadrsync 或第三方迁移工具(如Skopeo、LazyDocker)。

二、导出容器镜像与数据

2.1 批量导出镜像

使用以下命令生成待迁移容器列表并导出镜像:

  1. 获取所有运行容器ID:docker ps -q
  2. 按需筛选(如指定标签或网络):docker ps --filter "name=app*" -q
  3. 使用循环导出镜像:
    for id in $(docker ps -q); do
      image=$(docker inspect --format '{{.Config.Image}}' $id)
      tar_name=$(echo $image | tr '/' '_' | tr ':' '_')
      docker save -o /tmp/migration/${tar_name}.tar $image
    done
  4. 压缩镜像文件:tar -czf /tmp/images_backup.tar.gz /tmp/migration/

2.2 备份持久化数据

容器通常通过挂载卷或绑定目录存储数据,使用 rsynctar 批量备份:

  • 获取挂载点:docker inspect -f '{{range .Mounts}}{{.Source}}:{{.Destination}} {{end}}' $container_id
  • 使用 rsync -avz 将数据同步至目标服务器的临时目录。
  • 注意:若目标服务器IP变更或端口不同,需提前调整路由。

三、传输至目标服务器

推荐使用SSH+rsync或HTTP/HTTPS下载:

  • SSH方式rsync -avz -e 'ssh -p 2222' /tmp/migration/ user@target:/data/migration/
  • HTTP方式:在源服务器起临时Web服务,目标服务器使用 wget 拉取。
  • 校验完整性:传输后对比 md5sumsha256sum

四、导入镜像与启动容器

4.1 批量导入镜像

在目标服务器执行:

for f in /data/migration/*.tar; do
  docker load -i $f
done

若镜像名冲突,可使用 docker tag 重命名。

4.2 重建容器

根据源容器启动参数重建,建议使用 docker inspect 生成 docker run 命令模板:

  • 导出启动参数:docker inspect -f '{{json .Config}}' $container_id > config.json,再结合 jq 解析为可执行命令。
  • 或使用自动化工具 docker-compose:在源服务器运行 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/work:rw ghcr.io/red5d/docker-autocompose 生成compose文件,在目标服务器执行 docker-compose up -d

五、验证与收尾

  • 功能验证:检查容器日志、网络连通性、服务端口响应;对关键业务执行冒烟测试。
  • 数据一致性:对比源与目标的数据文件大小、修改时间,或使用 diff -r
  • 清理源数据:确认迁移无误后,在源服务器删除临时备份文件,避免残留。

六、常见问题与注意事项

  • 镜像依赖:使用 docker system df 检查未使用的层,迁移后建议运行 docker system prune
  • 网络模式:若容器使用host模式或自定义网络,需在目标服务器先创建相同网络:docker network create --driver bridge mynet
  • 资源限制:重建容器时需重新设置CPU、内存限制,避免因资源不足导致运行异常。
  • 安全加固:传输过程建议启用SSH密钥认证,避免使用明文密码;导入镜像前检查签名或哈希。

通过以上步骤,可实现容器批量、高效、零中断(若配合蓝绿发布)迁移至新服务器。建议在非生产环境先行演练,确保流程无误。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com