将 Docker 容器从一台服务器迁移到另一台服务器,主要包括以下步骤:保存容器的镜像,导出数据卷,传输文件到新服务器,然后在新服务器上重新运行容器。以下是具体的步骤和相应的命令:
1. 保存容器的镜像
首先,将正在运行的容器保存为镜像。如果你还没有镜像,可以用以下命令创建:
# 假设你的容器名是 my_container
docker commit my_container my_image:latest
2. 导出镜像
将镜像导出为 tar 文件:
docker save -o my_image.tar my_image:latest
3. 导出数据卷(如果有数据卷)
如果你的容器使用了数据卷,你需要将数据卷导出:
# 查找数据卷的挂载点
docker inspect my_container | grep -i mountpoint# 将数据卷复制到本地文件系统
docker cp my_container:/path/to/volume /local/path/to/volume
4. 传输文件到新服务器
将导出的镜像和数据卷通过 scp
或其他文件传输工具传输到新服务器:
# 使用 scp 传输
scp my_image.tar user@new_server:/path/to/destination
scp -r /local/path/to/volume user@new_server:/path/to/destination
5. 在新服务器上导入镜像
在新服务器上,加载镜像:
docker load -i /path/to/destination/my_image.tar
6. 恢复数据卷(如果有)
将数据卷复制回新的容器路径:
docker cp /path/to/destination/volume new_container:/path/to/volume
7. 运行容器
使用导入的镜像和数据卷在新服务器上运行容器:
# 运行容器时挂载数据卷
docker run -d --name new_container -v /path/to/volume:/path/to/volume my_image:latest
示例
假设你的容器名是 my_container
,数据卷路径是 /data
,用户是 user
,新服务器的地址是 new_server
,并且镜像名是 my_image
。以下是完整的命令示例:
# 1. 在旧服务器上,保存容器为镜像
docker commit my_container my_image:latest# 2. 导出镜像
docker save -o my_image.tar my_image:latest# 3. 导出数据卷
docker cp my_container:/data /local/data# 4. 传输镜像和数据卷到新服务器
scp my_image.tar user@new_server:/path/to/destination
scp -r /local/data user@new_server:/path/to/destination# 5. 在新服务器上,导入镜像
ssh user@new_server
docker load -i /path/to/destination/my_image.tar# 6. 恢复数据卷
docker cp /path/to/destination/data new_container:/data# 7. 运行容器
docker run -d --name new_container -v /path/to/destination/data:/data my_image:latest
通过以上步骤,你可以将 Docker 容器从一台服务器迁移到另一台服务器。