前言
由于最近筹备更换服务器,藉此记录一下整体的迁移工作流,无需引入外部克隆组件,实测裸机即可!这里简要说明一下我的整体迁移思路,由于我的Docker应用都是通过Docker-Compose部署的,因此实际上要做的仅仅是将每个容器挂载的数据卷迁移到新主机上即可,不过要注意上下文环境(比如文件属主、权限等)也要一起迁移才能在新主机上快速重构服务。
实践
-
做好数据备份!如果是国内云服务商可以直接生成服务器快照,以备不时之需
-
(可选) 由于部分镜像已经从Dockerhub中下架了因此需要将这部分镜像先导出为文件等到新主机上再导入docker
docker save -o image-example.tar image-example
-
在旧主机上打包docker数据挂载目录以及上面需要迁移的镜像文件,由于我所有应用都是在/docker目录下搭建的,因此只要打包整个docker目录即可(注意这里是每个应用数据卷挂载的目录不是指docker安装目录)
tar --same-owner -czvf docker-volume.tar.gz ./docker
-
将数据压缩包传输到新服务器上相同路径处,这里可以选择用scp等命令直接传输也可以选择先下载到本地再通过FTP传输
-
在解压数据包之前一定要确保在新服务器上已经存在或建立好原先的用户和用户组,否则解压后可能丢失属主信息,接下来cd进入目标位置解压即可
tar -xzvf docker.tar.gz -C ./
-
(可选)将打包的镜像文件导入docker中(确保新主机已经装好docker和compose组件)
docker load -i image-example.tar
-
最后逐一启动docker服务即可
docker-compose up -d
备注
这里仅记录一下某些容器迁移后异常的解决方案,可能不具有普适性,可忽略
- 关于wordpress迁移后redis容器无法正常启动
- 删除redis挂载卷重启即可,由于redis是对象缓存删除对wordpress数据并无影响