我以为本身迁移的方法挺 low 的,但时间紧迫,并且公司在 gitlab 也没帐号,只好经过很原始的文件 cvs 操做。仍是有点点小坑的,记录下。git
一开始我很傻的觉得,只要把 data 文件 copy 过去就能够了,用 scp 搞了半天没搞好,文件权限、全部者全乱了,真的是太傻太天真。后来查了下资料换了思路,分别备份容器和数据,再 scp 慢慢磨合。sql
Gitlab的data即便tar后用scp传过在再解压也不能直接使用,会报 postgresql 文件的 permission denied 。docker
对比发现docker的Gitlab会在建立的时候新建 postgresql 用户,但每次用户名都不同,致使此问题。安全
尝试将 date 权限 chmod -R 777 未能解决问题。采用 Gitlab 自带的备份恢复解决问题。bash
参考自Docker容器迁移 ---- 导入和导出容器 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 复制代码
进入容器身体,哦不,内部;app
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
;gitlab
事情作完,再也不纠缠,把这个备份包用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 相对 Gitlab 好点的地方是全部的数据都在 jenkins_home 目录下,并且只有一个要求——该目录的全部者 uid 为1000。
TMD 我用 chown 改了半天发现文件夹全部者始终为 administrator,最后发现用户 administrator 的uid就是 1000 。。。
直接同 Gitlab 备份容器和 data 再 scp 过去解压就行了。
关键是里面脚本好多要改的啊~~~
脚本内容详见怎么用Jenkins配置分布式环境的安全发布?
欢迎关注微信公众号,提供感悟和技术类原创文章。微信搜索小兵张健或扫描如下二维码。