Docker环境Gitlab的备份与迁移

前言

由于之前用的虚拟机系统是RHEL6.5,内核版本是2.6,导致只能用比较旧的Docker版本,出现了各种无法解释的问题,后来找了运维的同学把虚机的系统换成了ubuntu16.04,所以要给gitlab做一次迁移。

备份

新建一个备份

1
docker exec -it gitlab gitlab-rake gitlab:backup:create

按照我之前的挂载设置
备份文件位于宿主机的 /app/gitlab/data/backups
配置文件位于宿主机的 /app/gitlab/config
备份文件是一个带版本号,日期的压缩包,恢复备份的新gitlab必须与旧的是相同版本,所以要保证前后docker镜像相同
将配置文件压缩后,复制备份文件和配置文件到自己的电脑上

运行新的Gitlab

按照之前的配置在新机器上运行gitlab

1
2
3
4
5
6
7
8
9
docker run --detach \
--hostname 10.0.17.157 \
--publish 4443:443 --publish 80:80 --publish 1022:22 --publish 4567:4567 --publish 5000:5000 --publish 5001:5001 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

正常启动以后停止容器

1
docker stop gitlab

替换配置文件,复制备份

复制之前的备份到宿主机的/app/gitlab/data/backups文件夹内
覆盖之前的config压缩包到/app/gitlab/config

重新启动容器

1
docker start gitlab

还原备份

1
2
3
4
5
6
7
8
9
10
11
12
13
#进入容器,停止与数据库的连接
docker exec -it gitlab /bin/bash
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#修复权限问题
gitlab update-permissions
#验证
gitlab-ctl status
#恢复数据库
gitlab-rake gitlab:backup:restore
#重启并验证
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true