云计算百科
云计算领域专业知识百科平台

记录生产过程中----迁移docker 镜像到新服务器


迁移步骤详解

要将 /home/docker/song-schedule 完整迁移到新服务器,需确保 代码、数据、镜像、配置 的一致性。以下是具体操作流程:


1. 在旧服务器上准备迁移文件 1.1 打包项目目录

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

1.2 导出 Docker 镜像 由于服务依赖本地构建的镜像(如 super-nginx:001、super-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 复制文件到新服务器 将以下文件通过 scp 或 rsync 传输到新服务器的相同路径(如 /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.pem 和 key.pem),且文件名与 Nginx 配置中的路径一致。


4. 启动服务

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

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

# 查看服务状态
docker-compose ps

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


5. 验证迁移结果

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

  • 日志集中管理:使用 ELK 或 Grafana Loki 收集容器日志,替代直接挂载日志目录。

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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 记录生产过程中----迁移docker 镜像到新服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!