基于docker的gitlab的迁移

由于某些原因,公司需要将gitlab从服务器A向B迁移,据了解,A服务器上gitlab是用docker部署的。写下本文,记录一下迁移的步骤。

 

因为涉及到两台服务器的操作,避免混淆,分别记下两台服务器的操作。大致如下

A服务器:

创建备份文件,并上传到B服务器

B服务器:

1.安装docker

2.拉取gitlab镜像

3.恢复数据

 

一、A服务器的文件备份

查看容器详情,主要是要看容器的名字或者id

docker ps

然后根据容器id或名字找到挂载的目录,inspect后面跟着的是CONTAINER ID或NAMES,如:

docker inspect gitlab | grep Mount -A 20
docker inspect 641d16e052b3 | grep Mount -A 20

我的三个挂载目录如下,冒号前是宿主机(即服务器A)的目录

/data/gitlab/data:/var/opt/gitlab
/data/gitlab/config:/etc/gitlab
/data/gitlab/logs:/var/log/gitlab

接下来进入容器并备份

1.以下命令进入容器
docker exec -it gitlab /bin/bash

2.以下命令在容器的/var/opt/gitlab/backups目录,
即我这里的服务器A的/data/gitlab/data/backups目录下生成备份文件1598965868_2020_09_01_13.3.2_gitlab_backup.tar
gitlab-rake gitlab:backup:create

这里要注意这样并不会连配置文件一起备份,所以需要手动将配置文件备份

配置文件的路径为/etc/gitlab,即对应服务器A的/data/gitlab/config,在目录下找到下面两个文件复制到新服务器的对应目录
gitlab.rb
gitlab-secrets.json

到这里备份就完成了,因为旧服务已经不打算使用了,所以我这里也把它给停掉了

docker exec -it gitlab /bin/bash  进入容器

gitlab-ctl stop  停止gitlab全部服务

exit  退出容器执行 

docker stop gitlab  停止容器

 

二、B服务器安装docker并配置

1.安装docker

安装docker
yum -y install docker

启动docker
systemctl start docker

查看docker版本
docker  version

查看docker状态
systemctl status docker

2.配置镜像加速器

这里我选择的是阿里云的容器镜像服务https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,阿里云会分配一个加速器,根据指引配置即可

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://rez80i5v.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

3.开机启动docker

设置开机启动docker
systemctl enable docker

 

三、拉取gitlab镜像包

1.获取镜像包

这里要拉取跟A服务器相同版本的镜像包,命令如下,冒号后面指定版本
docker pull gitlab/gitlab-ce:13.3.2-ce.0

查看镜像IMAGE ID
docker images

2.创建相应文件夹作为挂载目录

mkdir -p /home/gitlab/config
mkdir -p /home/gitlab/logs
mkdir -p /home/gitlab/data

3.启动容器,这里启动需要一点时间

docker run --detach \
--privileged=true \
--hostname 192.168.201.129 \
--publish 443:443 --publish 80:80 --publish 2222:22 \
--name gitlab --restart always \
--volume /home/gitlab/config:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab 3494787883fd

各个参数说明:

--detach 指定容器后台运行

--privileged=true 给容器加上宿主机root权限,否则可能会报权限不足导致启动失败

--hostname 指定主机地址

--publish 指定端口映射,冒号前代表宿主机的端口,冒号后代表容器的端口

--name 容器的名字

--restart always 总是重启

--volume 指定数据卷

最后那一串东西是docker image的id 用来指定使用那个镜像

ps:如果启动失败的话,可以查看报错日志

查看日志
docker logs -f gitlab

 

四、恢复数据

1.将备份文件的权限改为777

上传前面的备份文件和配置文件到对应目录
/home/gitlab/data/backups
/home/gitlab/config

将备份文件权限修改为777,不然可能会报权限不足导致恢复备份失败
chmod 777 1598965868_2020_09_01_13.3.2_gitlab_backup.tar

2.进入容器,停止相关数据连接服务,加载备份文件

进入容器
docker exec -it gitlab /bin/bash

停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

进入目录/var/opt/gitlab/backups,因为备份在这个目录下
cd /var/opt/gitlab/backups

加载备份文件,注意等号后面只需到文件编号,不用整个文件名
gitlab-rake gitlab:backup:restore BACKUP=1598965868_2020_09_01_13.3.2

等待备份文件加载完成即可,中间会出现几次交互,大概意思就是加载备份会删除现有数据,是否确定,都输入yes就可以

重新加载配置
gitlab-ctl reconfigure

3.启动服务

启动服务
gitlab-ctl start

 

至此,基于docker的gitlab迁移就已经完成了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值