Docker部署的项目迁移到另一台服务器

一、镜像迁移

1. 在旧服务器上操作

  1. 查看当前运行的容器

    docker ps
    

    找到你的项目容器,记录对应的 IMAGE 名称和标签(如 myapp:latest)。

  2. 导出镜像为文件

    docker save -o myapp.tar myapp:latest
    
    • -o myapp.tar:将镜像保存为 myapp.tar 文件。
    • myapp:latest:替换为你的镜像名称和标签。
  3. 传输镜像文件到新服务器

    scp myapp.tar user@新服务器IP:/目标路径/
    
    • user:新服务器的用户名。
    • /目标路径/:建议传送到用户目录如 /home/user/

2. 在新服务器上操作

  1. 导入镜像

    docker load -i /home/user/myapp.tar
    
    • -i:指定导入的文件路径。
  2. 验证镜像

    docker images
    

    确认镜像已成功导入。


二、数据卷迁移

1. 在旧服务器上操作

  1. 查找容器使用的数据卷

    docker inspect 容器名称或ID
    

    在输出的 Mounts 部分找到数据卷在宿主机上的路径(如 /var/lib/docker/volumes/volume_name/_data)。

  2. 打包数据卷内容

    sudo tar -czvf data_volume.tar.gz /var/lib/docker/volumes/volume_name/_data
    
  3. 传输数据文件到新服务器

    scp data_volume.tar.gz user@新服务器IP:/home/user/
    

2. 在新服务器上操作

  1. 创建新数据卷

    docker volume create mydata
    

    mydata 是数据卷名称,可自定义。

  2. 解压数据到新数据卷

    sudo tar -xzvf /home/user/data_volume.tar.gz -C /var/lib/docker/volumes/mydata/_data
    
    • 确保目标路径存在,若不存在需先创建目录。

三、启动容器

在新服务器上运行以下命令(根据你的容器参数调整):

docker run -d \
  --name myapp \
  -p 80:80 \
  -v mydata:/容器内数据路径 \
  myapp:latest
  • -d:后台运行。
  • --name:容器名称。
  • -p:端口映射(宿主机端口:容器端口)。
  • -v:挂载数据卷(mydata 是新数据卷名称)。

四、使用 Docker Compose(可选)

如果旧服务器使用 docker-compose.yml

  1. 将旧服务器的 docker-compose.yml 复制到新服务器:

    scp docker-compose.yml user@新服务器IP:/home/user/
    
  2. 在新服务器启动服务:

    docker-compose up -d
    

注意事项

  1. 停止旧服务:迁移前建议停止旧容器,避免数据不一致:

    docker stop 容器名称或ID
    
  2. 端口冲突:确保新服务器的端口(如 80)未被占用。

  3. 镜像版本:如果镜像已推送到 Docker Hub 或私有仓库,可直接在新服务器拉取:

    docker pull 用户名/仓库名:标签
    
  4. 权限问题:数据卷操作可能需要 sudo 权限。


按照以上步骤操作,即可完成项目迁移。遇到具体问题时,可结合错误信息调整命令参数。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注