将192.168.0.101上面的gitlab迁移到192.168.0.132上去,都使用的容器
第一步.在132机器上起一个gitlab的容器(版本需要跟101一致)
101上的gitlab容器是通过docker-compose.yml启动的,所以直接将101上的docker-compose.yml文件拷贝到132上再起容器
101机器上:
xieshan@dell:/data/gitlab$ cat docker-compose.yml
version: '3'
services:
web:
image: 'gitlab/gitlab-ce:13.9.2-ce.0'
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.easycomputation.com:8060'
ports:
- '8060:8060'
- '2222:22'
- '5005:5005'
volumes:
- '/data/gitlab/config:/etc/gitlab'
- '/data/gitlab/logs:/var/log/gitlab'
- '/data/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
xieshan@dell:/data/gitlab$ scp ./docker-compose.yml docker@192.168.0.132:/home/docker/gitlab/ #手动复制过去也行
132机器上:
docker@132:~/gitlab$ cd /home/docker/gitlab/
docker@132:~/gitlab$ mkdir config data logs
docker@132:~/gitlab$ ls
backups config data docker-compose.yml logs
docker@132:~/gitlab$ cat docker-compose.yml
version: '3'
services:
web:
image: 'gitlab/gitlab-ce: 13.9.2-ce.0'
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.easycomputation.com:8060'
ports:
- '8060:8060'
- '2222:22'
- '5005:5005'
volumes:
- '/home/docker/gitlab/config:/etc/gitlab'
- '/home/docker/gitlab/logs:/var/log/gitlab'
- '/home/docker/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
docker@132:~/gitlab$ docker-compose up -d
第二步:在web界面上,通过192.168.0.132:8090访问进去,随便设置一个密码(后期会被覆盖)登录进去(这一步不可以省略)
第三步:在101上打包数据,并且将压缩包传递到132的/home/docker/gitlab/backups里面去
101机器上:
docker exec -t docker_web_1 gitlab-backup create #在容器外执行
将在docker容器里里面的/var/opt/gitlab/backups/目录下产生一个1665386470_2022_10_10_13.9.2_gitlab_backup.tar的压缩包
传递压缩包(在101的容器内部)
root@ed414f9cc6e7:/var/opt/gitlab/backups# pwd
/var/opt/gitlab/backups
root@ed414f9cc6e7:/var/opt/gitlab/backups# ls
1665386470_2022_10_10_13.9.2_gitlab_backup.tar
root@ed414f9cc6e7:/var/opt/gitlab/backups# scp 1665386470_2022_10_10_13.9.2_gitlab_backup.tar docker@192.168.0.132:/home/docker/gitlab/backups
第四步:传递配置文件
在101机器上:
xieshan@dell:/var/opt/gitlab$ cd /data/gitlab/
xieshan@dell:/data/gitlab$ ls
config data docker-compose.yml logs
xieshan@dell:/data/gitlab$ sudo scp -r ./config/* root@192.168.0.132:/home/docker/gitlab/config
第五步:恢复数据跟文件
在132的容器内部:
docker exec -it gitlab_web_1 /bin/bash #进入132的容器里面
cd /data/gitlab11.10.1/data/backups #如果这个目录下没有那个压缩包,就吧外面的压缩包复制进来
chmod 777 1665386470_2022_10_10_13.9.2_gitlab_backup.tar
gitlab-ctl stop unicorn #关闭相关服务
gitlab-ctl stop sidekiq
gitlab-backup restore BACKUP=1665386470_2022_10_10_13.9.2 #开始恢复,一直yes就可以了,中间一些警告可以忽视(这个压缩包的名字不用写全,会自动补齐)
gitlab-ctl reconfigure #重新加载配置
gitlab-ctl start unicorn #重新启动相关服务
gitlab-ctl start sidekiq
gitlab-ctl restart #重新启动gitlab服务
exit #退出容器
然后可以在web界面上登录,看看数据是否都恢复了
参考博客:(3条消息) 【非常详细】docker中gitlab的数据迁移_seniorhui666的博客-CSDN博客
(3条消息) 基于docker的gitlab的迁移_kaen_w的博客-CSDN博客_docker gitlab 迁移
Backup | GitLab