迁移docker镜像到新服务器的具体操作流程

 更新时间:2025年07月25日 11:28:57   作者:leader_song(小宋编码)  
在日常工作中,我们有时会需要将服务器A上的镜像上传至服务器B上,这篇文章主要介绍了迁移docker镜像到新服务器的具体操作流程,文中通过代码介绍的非常详细,需要的朋友可以参考下

迁移步骤详解

要将 /home/docker/song-schedule 完整迁移到新服务器,需确保 代码、数据、镜像、配置 的一致性。

以下是具体操作流程:

1. 在旧服务器上准备迁移文件

1.1 打包项目目录

# 进入项目目录
cd /home/docker
# 压缩整个目录(包含子目录和隐藏文件)
tar czvf song-schedule.tar.gz song-schedule/

1.2 导出 Docker 镜像

由于服务依赖本地构建的镜像(如 super-nginx:001super-mall-admin-server:v001),需将镜像导出为文件:

# 列出所有相关镜像
docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server"

# 导出镜像(示例)
docker save -o super-nginx-001.tar super-nginx:001
docker save -o super-mall-admin-server-v001.tar super-mall-admin-server:v001
docker save -o super-notes-server-v002.tar super-notes-server:v002

1.3 复制文件到新服务器

将以下文件通过 scprsync 传输到新服务器的相同路径(如 /home/docker):

song-schedule.tar.gz

• 导出的镜像文件(super-nginx-001.tar 等)

• 证书目录 /home/cert(如果新服务器没有证书需同步)

• 挂载的日志和文件目录(如 /mnt/logs

# 示例:使用 scp 传输
scp song-schedule.tar.gz root@新服务器IP:/home/docker/
scp /home/cert/* root@新服务器IP:/home/cert/
scp /mnt/logs/song-schedule/* root@新服务器IP:/mnt/logs/song-schedule/

2. 在新服务器上恢复环境

2.1 解压项目目录

# 进入目标目录
cd /home/docker
# 解压文件
tar xzvf song-schedule.tar.gz

2.2 加载 Docker 镜像

# 加载镜像(需在解压后的目录外操作)
docker load -i super-nginx-001.tar
docker load -i super-mall-admin-server-v001.tar
docker load -i super-notes-server-v002.tar

# 验证镜像是否加载成功
docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server"

2.3 创建必要目录

检查所有挂载的宿主机目录是否存在:

# 创建日志目录
mkdir -p /mnt/logs/song-schedule/{file,super-mall-admin,super-notes}

# 创建文件存储目录
mkdir -p /home/docker/song-schedule/file/defaultBucketName

# 设置目录权限(避免容器无权限写入)
chmod -R 755 /mnt/logs /home/docker/song-schedule

3. 修改配置适配新环境

检查 docker-compose.yml 中以下内容是否需调整:

3.1 路径一致性

• 确保所有挂载的 宿主机路径 在新服务器存在(如 /home/cert/mnt/logs)。

• 如果新服务器路径不同,需修改 volumes 部分(例如将 /home/cert 改为 /etc/nginx/cert)。

3.2 端口冲突

检查新服务器的端口是否被占用(如 8084-8087、8090):

netstat -tuln | grep -E "8084|8085|8086|8087|8090"

若端口冲突,修改 ports 配置(如 "8088:443")。

3.3 证书配置

确保 /home/cert 目录包含有效的 SSL 证书文件(如 cert.pemkey.pem),且文件名与 Nginx 配置中的路径一致。

4. 启动服务

# 进入项目目录
cd /home/docker/song-schedule

# 启动所有服务(使用 -d 后台运行)
docker-compose up -d

# 查看服务状态
docker-compose ps

# 检查容器日志(示例)
docker-compose logs super-web-nginx

5. 验证迁移结果

  1. 访问服务:
    • 通过浏览器或 curl 测试 HTTPS 端口(如 https://新服务器IP:8086)。
  2. 检查数据持久化:
    • 确认 /mnt/logs/home/docker/song-schedule/file 中有新日志和文件生成。
  3. 监控容器状态:
docker ps -a | grep "song-schedule"

常见问题处理

• 问题1:容器启动失败,提示 “No such file or directory”

• 原因:挂载的宿主机目录不存在或权限不足。

• 解决:检查目录路径和权限,确保与 docker-compose.yml 一致。

• 问题2:Nginx 报错 “SSL certificate not found”

• 原因:证书文件未正确挂载到容器。

• 解决:确认 /home/cert 中有证书文件,且容器内路径 /etc/nginx/cert 映射正确。

• 问题3:端口冲突

• 解决:修改 docker-compose.yml 中的宿主机端口(如 "8091:443"),然后重启服务:

```bash
docker-compose down && docker-compose up -d
---

**迁移后优化建议**

1. 使用 Docker Registry:将镜像推送到私有仓库(如 Harbor),避免手动导出导入。
2. 环境变量化配置:将路径、端口等提取到 `.env` 文件,便于跨环境管理:

```properties
# .env 文件示例
CERT_PATH=/home/cert
LOG_PATH=/mnt/logs

docker-compose.yml 中引用:

volumes:
  - ${CERT_PATH}:/etc/nginx/cert
  1. 日志集中管理:使用 ELK 或 Grafana Loki 收集容器日志,替代直接挂载日志目录。

通过以上步骤,您可以完整迁移服务并确保数据一致性。如果遇到问题,可通过 docker-compose logs <服务名> 查看详细错误日志。

总结

到此这篇关于迁移docker镜像到新服务器的文章就介绍到这了,更多相关迁移docker镜像到新服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 快速掌握使用Docker搭建开发环境

    快速掌握使用Docker搭建开发环境

    利用Docker Compose技术辅助开发人员对于开发环境的搭建,最终实现开发人员只要装有Docker就可以完成整个开发环境的搭建。今天小编给大家分享使用Docker搭建开发环境的详细流程,感兴趣的朋友一起看看吧
    2021-05-05
  • docker运行nginx镜像的实现步骤

    docker运行nginx镜像的实现步骤

    这篇文章主要介绍了docker运行nginx镜像的实现,并将配置文件和目录挂载到宿主机上,以实现方便统一的管理配置信息,感兴趣的可以了解一下
    2023-10-10
  • Dockerfile中的保留字指令的过程解析

    Dockerfile中的保留字指令的过程解析

    Dockerfile是用来构建Docker镜像的构建文件,由一系列命令和参数构成的脚本,本文重点给大家介绍Dockerfile中的保留字指令的过程解析,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Docker网络配置及部署SpringCloud项目详解

    Docker网络配置及部署SpringCloud项目详解

    bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上,下面这篇文章主要给大家介绍了关于Docker网络配置及部署SpringCloud项目的相关资料,需要的朋友可以参考下
    2023-01-01
  • docker拉取redis最新镜像并运行的方法详解

    docker拉取redis最新镜像并运行的方法详解

    这篇文章主要介绍了docker拉取redis最新镜像并运行的方法,文章通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • docker各目录含义详细解析

    docker各目录含义详细解析

    Docker容器的目录结构通常是在构建镜像时定义的,它基于所使用的基础镜像,下面这篇文章主要给大家介绍了关于docker各目录含义详细解析的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Milvus docker-compose 部署操作方法

    Milvus docker-compose 部署操作方法

    本文介绍了使用Docker-compose部署Milvus向量数据库的详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-07-07
  • Docker数据卷挂载命令volume(-v)与mount的使用总结

    Docker数据卷挂载命令volume(-v)与mount的使用总结

    本文主要介绍了Docker数据卷挂载命令volume(-v)与mount的使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • keepalived+nginx+httpd实现的双机热备+负载均衡

    keepalived+nginx+httpd实现的双机热备+负载均衡

    本文主要介绍了keepalived + nginx + httpd 实现的双机热备+负载均衡,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • 项目访问使用docker bridge网络模式(端口映射)配置过程

    项目访问使用docker bridge网络模式(端口映射)配置过程

    这篇文章主要介绍了项目访问使用docker bridge网络模式(端口映射)配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03

最新评论