Docker Gitlab和Jenkins的迁移

我觉得自己迁移的方法挺 low 的,但时间紧迫,而且公司在 gitlab 也没账号,只好通过很原始的文件 cvs 操作。还是有点点小坑的,记录下。

一开始我很傻的以为,只要把 data 文件 copy 过去就可以了,用 scp 搞了半天没搞好,文件权限、所有者全乱了,真的是太傻太天真。后来查了下资料换了思路,分别备份容器和数据,再 scp 慢慢磨合。

Gitlab

Gitlab的data即使tar后用scp传过在再解压也不能直接使用,会报 postgresql 文件的 permission denied 。

对比发现docker的Gitlab会在创建的时候新建 postgresql 用户,但每次用户名都不一样,导致此问题。

尝试将 date 权限 chmod -R 777 未能解决问题。采用 Gitlab 自带的备份恢复解决问题。

参考自Docker容器迁移 ---- 导入和导出容器 Gitlab如何进行备份恢复与迁移?

Gitlab内备份

Gitlab容器创建命令

docker run -d \
   --privileged=true \
   -p 444:443 -p 4000:80 -p 23:22 \
   --name gitlab \
   --restart always \
   -v /storage/data/gitlab/config:/etc/gitlab \
   -v /storage/data/gitlab/logs:/var/log/gitlab \
   -v /storage/data/gitlab/data:/var/opt/gitlab \
   gitlab/gitlab-ce:latest
复制代码

进入容器身体,哦不,内部;

docker exec -it gitlab /bin/bash
复制代码

紧接着,趁胜追击,打出备份命令;

gitlab-rake gitlab:backup:create
复制代码

这时在 /var/opt/gitlab/backup 目录会有备份文件,文件名类似 1559814146_2019_06_06_11.6.3_gitlab_backup.tar

事情做完,不再纠缠,把这个备份包用scp传到新的服务器上。

scp 1559814146_2019_06_06_11.6.3_gitlab_backup.tar administrator@172.16.30.151:/home/administrator
复制代码

接着用docker把当前容器也备份

docker export gitlab>gitlab_c.tar
复制代码

同样的,scp到新的服务器

scp gitlab_c.tar administrator@172.16.30.151:/home/administrator
复制代码

登录到新的服务器,导入容器

docker import gitlab_c.tar gitlab:1.0
复制代码

启动,手动导入的镜像启动的时候要把执行命令 /assets/wrapper 也带上,执行命令用 docker inspect gitlab 查看,短的 docker ps 直接看得到。

docker run -d \
    --privileged=true \
    -p 444:443 -p 4000:80 -p 23:22 \
    --name gitlab \
    --restart always \
    -v /storage/data/gitlab/config:/etc/gitlab \
    -v /storage/data/gitlab/logs:/var/log/gitlab \
    -v /storage/data/gitlab/data:/var/opt/gitlab \
    gitlab:1.0 \
    /assets/wrapper
复制代码

进入容器内部,导入 Gitlab 备份包

gitlab-rake gitlab:backup:restore BACKUP=1559814146_2019_06_06_11.6.3
复制代码

重启容器docker restart gitlab即可,Gitlab备份恢复需要版本号一致,直接备份容器不会出现问题。

Jenkins

Jenkins 相对 Gitlab 好点的地方是所有的数据都在 jenkins_home 目录下,而且只有一个要求——该目录的所有者 uid 为1000。

TMD 我用 chown 改了半天发现文件夹所有者始终为 administrator,最后发现用户 administrator 的uid就是 1000 。。。

直接同 Gitlab 备份容器和 data 再 scp 过去解压就好了。

关键是里面脚本好多要改的啊~~~

脚本内容详见怎么用Jenkins配置分布式环境的安全发布?


欢迎关注微信公众号,提供感悟和技术类原创文章。微信搜索小兵张健或扫描以下二维码。

转载于:https://juejin.im/post/5cff6666518825361d02acff

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值