说明:下面命令中带有<your container name>字,是 gitlab 容器的名称,请按实际情况进行代替

在创建备份之前,你不需要停止任何东西

docker exec -t <your container name> gitlab-rake gitlab:backup:create

gitlab_backup.sh content:

#! /bin/bash
case "$1" in
start)
docker exec -t <your container name> gitlab-rake gitlab:backup:create
;;
esac

嘗試腳本是否可以正常運行

gitlab_backup.sh start

將腳本放入到 /root下,並使用 sudo crontab -e 添加一下內容

0 2 * * * /root/gitlab_backup.sh start

重啟cron服務

sudo service cron reload
sudo service cron restart

进入gitlab容器:

#来自Gitlab docker外的Ubuntu主机
sudo docker exec -it <your container name> /bin/bash

查看gitlab 本地的备份路径

gitlab_rails['backup_path'] 在 Gitlab 配置文件 gitlab.rb 是 注释的, 它的默认备份路径是在 /var/opt/gitlab/backups.

# 来自Gitlab Docker
root@bcc3d4829e2c:/# cat /etc/gitlab/gitlab.rb | grep backup_path
# gitlab_rails['manage_backup_path'] = true
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

创建一份备份

检测备份

# 来自Gitlab Docker
root@bcc3d4829e2c:/etc/gitlab# ls -lart /var/opt/gitlab/backups
total 2777464
drwxr-xr-x 20 root root 4096 May 24 02:10 ..
drwx------ 2 git root 4096 May 24 02:15 .
-rw-r--r-- 1 root root 2844108800 May 24 02:18 1563732042_2019_07_21_11.1.4_gitlab_backup.tar

备份配置文件和 密钥文件

在上面创建备份时,没有备份 配置文件和密钥文件,这是因为上面一步是使用 使用密钥文件加密Gitlab 数据,如果你将他们保存相同的地方,你将会破坏加密过程。

所以请备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 并且将他们保存在一个其它Gitlab 备份数据的安全的地方

还原 Gitlab

你只能通过Gitlab 备份还原 一样的Gitlab版本和类型。并且你需要一个运行中的Gitlab实例。

停止一些 Gitlab 服务

# 来自Gitlab Docker

gitlab-ctl reconfigure
gitlab-ctl start
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
ls -lart /var/opt/gitlab/backups

开始还原

备份文件一定可以在 定义在 Gitlab 配置文件/etc/gitlab/gitlab.rbgitlab_rails['backup_path']的路径下找到

在 docker 外主机终端执行

#来自Gitlab docker外的Ubuntu主机
docker exec -it <your container name> gitlab-rake gitlab:backup:restore --trace

还原过程中会出现2次 Do you want to continue (yes/no)? 的询问操作,都输入yes之后,按Enter 回车键确认操作。

我们当然添加 BACKUP 参数来指定备份文件如果有多个备份文件在备份目录下,BACKUP参数的值是 备份文件的时间戳,比如: docker exec -it <your container name> gitlab-rake gitlab:backup:restore BACKUP=1563732042_2019_07_21_11.1.4 --trace

重启Gitlab并安全检查

使用gitlabctl restart命令重启Gitlab服务

# 来自Gitlab Docker
gitlab-ctl restart

使用gitlab-rake gitlab:check SANITIZE=true命令来发起Gitlab安全检查

# 来自Gitlab Docker
gitlab-rake gitlab:check SANITIZE=true

使用docker ps来验证 Gitlab 容器健康

#来自Gitlab docker外的Ubuntu主机
sudo docker ps

重置root用戶密碼:

gitlab ce 官方文檔How to reset your root password

進入 docker 容器命令行內,執行

# Form Docker container /bin/bash
# 執行下面的命令啓動一個 Ruby on Rails console,等待 console加載完成
root@44b33d22e70f:/# gitlab-rails console production
-------------------------------------------------------------------------------------
GitLab: 11.1.4 (63daf37)
GitLab Shell: 7.1.4
postgresql: 9.6.8
-------------------------------------------------------------------------------------
Loading production environment (Rails 4.2.10)
irb(main):001:0> user = User.where(id: 1).first #這裏通過用戶id查詢用戶,也可以通過email或用戶名查詢
=> #<User id:1 @root>
irb(main):002:0> user.password="12345678" #設置密碼
=> "12345678"
irb(main):003:0> user.password_confirmation="12345678" #確認密碼
=> "12345678"
irb(main):004:0> user.save! # 保存修改
Enqueued ActionMailer::DeliveryJob (Job ID: 38850b0d-7690-47b7-b5c9-9cf975bae8fd) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):005:0> quit #退出 Ruby on Rails console

參考

  1. docker部署的GitLab代码自动备份
  2. Backup and restore Omnibus GitLab configuration
  3. Backup and restore Gitlab in docker 需要参考这个来写自己的尝试笔记
  4. gitlab修改root密码

docker gitlab backup的更多相关文章

  1. docker gitlab迁移 备份 部署 搭建以及各种问题

    当前环境 服务器A 服务器B ubuntu docker gitlab(版本一致) docker安装gitlab 由于考虑到gitlab 包含了⾃身的nginx.数据库.端⼝占⽤等等因数,这⾥使⽤的是 ...

  2. docker gitlab

    Alternatively, you can manually launch the gitlab container and the supporting postgresql and redis ...

  3. docker+gitlab+gitlab-runner部署

    环境 服务端:centos7 客户端:window 在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传 ...

  4. docker+gitlab的安装和迁移

     docker+gitlab的安装 docker search gitlab docker pull docker.io/gitlab/gitlab-ce docker run --name=: -- ...

  5. 六、Docker+Gitlab

    原文:六.Docker+Gitlab (1)下载镜像: docker pull gitlab/gitlab-ce (2)运行镜像: GITLAB_HOME=`pwd`/data/gitlab dock ...

  6. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  7. Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图

    Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图 转载自:原创 IT综合 作者:百联达 时间:2017-05-09 15:48:08 41 ...

  8. docker gitlab,redmine,etc development enviroments

    sameersbn-gitlab is better more than officals sameersbn/redmine https://hub.docker.com/r/sameersbn/r ...

  9. docker gitlab安装

    mkdir -p /data/docker/volumes/gitlab chmod 777 /data/docker/volumes/gitlab cd /data/docker/volumes/g ...

随机推荐

  1. Octave的安装

    本文是参考吴恩达老师的深度学习视频而做的笔记 深度学习 引言 挑战:AI真正的挑战在于解决那些对人类来说很容易执行,但很难形式化描述的问题,比如识别人们所说的话/图像中的脸/分辨苹果和梨. 解决方案: ...

  2. BZOJ-3495 前缀优化建图2-SAT

    题意:有n个城镇被分成了k个郡,有m条连接城镇的无向边.要求给每个郡选择一个城镇作为首都,满足每条边至少有一个端点是首都. 解法:以前没学过,参考https://blog.csdn.net/linkf ...

  3. docker linux基本操作

    容器运行起来之后一些基本的工具还是要安装好: 这个工具的安装方式和linux是一样的,因为容器本身就是一个微linux系统 先安装 apt, 1 / apt-get update 安装了apt之后 可 ...

  4. mongoose 常用数据库操作 删除

    删除 Model.remove(conditions, [callback]) try.js var User = require("./user.js"); function d ...

  5. 数组循环移动 空间复杂度O(1)

    ---恢复内容开始--- 题目大意: 输入元素个数,输入数组,输入右移步数,输出结果: 基本思路: 可以把数组(从下标为0开始存储)看成两部分,分别是[0,n-step-1],[n-step,n-1] ...

  6. Java高并发网络编程(二)BIO

    一.阻塞 服务器端 public class BIOServer { public static void main(String[] args) throws Exception { ServerS ...

  7. Shiro学习(23)多项目集中权限管理

    在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...

  8. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  9. centos7 安装telent和telnet-server

    安装centos7 无telnet命令 先检查CentOS7.0是否已经安装以下两个安装包:telnet-server.xinetd.命令如下: rpm -q telnet-server rpm -q ...

  10. Zabbix 历史数据存储到 Elasticsearch

    Zabbix 历史数据存储到 Elasticsearch Zabbix 3.4.6 版本开始支持历史数据存储到 Elasticsearch, 早就想测试这个功能,最近有个需求需保存 zabbix 的历 ...