项目原始的nexus是容器化部署的,要从阿里云机器迁移到自己的物理机,版本3.15
刚开始使用容器的传统迁移方法 先去save image,然后load image ,之后把映射的存储数据拷贝过去 ,思路是这个思路,但是过程中出现了问题:
1.映射过去的路径下面没有存储的数据
从上图看到 容器的映射路径是:
/opt/nexus-data:/var/nexus-data去宿主机上查看,发现没有有用的数据只有log
翻看了一些关于nexus的技术文档知道了 nexus的数据 是存储在 /nexus-data
所以应该是部署 nexus的小伙伴没有映射正确
看到这里想着问题也不大 ,docker cp出来,放到新容器中的对应路径下面 ,重启 nexus容器是否就ok了呢 ?
但是后面经过一系列的实验没有成功,中间看过太多的帖子都没有解决问题, 最后到容器里面发现一个问题,我们原有对外提供服务的 nexus ,里面 nexus的状态竟然是 stopped ? 作何解释?
又看了一些帖子,没有找到相关问题所在,而且 调试 nexus启动脚本也发现不了任何问题,而且进程也在
猜测之前的拷贝完没有迁移成功可能和这个有关系,虽然重启过容器,但是没作用。
如果有root权限,我们在容器里面还可以再试试,由于使用的是公有镜像所有打住了
sonatype/nexus3
有了这个猜测,就想着在服务器上直接装一个nexus,拷贝完数据之后重启一下 nexus .,/nexus restart ,看看是否可以完成迁移,原来的私有库是否可以出现。
结果也是证实了猜测,重启之后原始库出现,迁移完成。
迁移的过程中涉及到文件的替换拷贝总结如下:
步骤一、在迁出机器,备份databases
1、在管理界面System-Tasks界面,点击“Create task”
2、选择Admin-Export databases for backup
3、填写好名称,保存路径,Task frequency可以选择Manual,保存之后,立即执行一次
步骤二、在迁出机器,备份blobs
1、进入 E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\blobs
2、将所有文件夹打包
步骤三、在迁入机器,导入databases
1、停止NEXUS服务
cd E:\nexus-3.15.0-01-win64\nexus-3.15.0-01\bin
nexus /stop
2、删除 E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\db 下的如下目录
accesslog
analytics
audit
component
config
security
3、将步骤一中,选择的路径下的所有文件,拷贝到
E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\restore-from-backup
步骤四、在迁入机,导入blobs
1、将步骤二中,打包的所有文件,按照原样,解压到迁入机的
E:\nexus-3.15.0-01-win64\sonatype-work\nexus3\blobs
2、重启迁入机的nexus
cd E:\nexus-3.15.0-01-win64\nexus-3.15.0-01\bin
nexus /start
目前先使用宿主机的方式访问nexus,拿到nexus官方的 dockerfile 后手动打一个 自己的镜像可以再次验证一下以上问题。