Gitlab —— 通过Docker安装,迁移

文章目录

  • Gitlab —— Docker安装,迁移
    • Docker 安装 Gitlab
      • 安装Docker
      • 安装Gitlab (我是B)
    • A -> B迁移
      • A 准备
        • 查看Docker卷指向
        • 备份数据(A)
        • 备份数据(两个文件)
        • 备份后,停服(避免这时有人上传)
        • 将A备份文件传给B或者下载后上传给B
      • B 接收处理
        • 进入容器停止相关服务,并加载备份文件
        • 启动服务

Gitlab —— Docker安装,迁移


Docker 安装 Gitlab

安装Docker

  • yum安装
#安装docker
yum -y install docker
 
#启动docker
systemctl start docker
 
#查看docker版本
docker  version
 
#查看docker状态
systemctl status docker
  • 镜像修改
    docker 设置国内镜像源

  • 设置开机自动启动docker

# 设置开机启动docker
systemctl enable docker

安装Gitlab (我是B)

  • 拉取镜像
# 一定要拉取与源gitlab相同版本的
# 查看版本:gitlab操作界面右上角点击"?"号图标 > help
# 官方hub镜像tag:https://hub.docker.com/r/gitlab/gitlab-ce/tags
docker pull gitlab/gitlab-ce:14.8.2-ce.0
 
# 查看镜像IMAGE ID
docker images
  • 创建与源gitlab相同的挂载目录(这里要先查看A【源gitlab】的挂载)
mkdir -p /data/docker/gitlab/config
mkdir -p /data/docker/gitlab/logs
mkdir -p /data/docker/gitlab/data
  • 启动容器
docker run --detach \
--privileged=true \
--hostname 111.11.111.111 \
--publish 443:443 --publish 80:80 --publish 2222:22 \
--name gitlab --restart always \
--volume /data/docker/gitlab/config:/etc/gitlab \
--volume /data/docker/gitlab/logs:/var/log/gitlab \
--volume /data/docker/gitlab/data:/var/opt/gitlab 1deb6171764b
  • 默认密码(保存24小时)
# 进入容器
docker exec -it gitlab /bin/bash
# 存放位置(默认存放24小时)
/etc/gitlab/initial_root_password
  • 启动参数解释
--detach 指定容器后台运行

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

--hostname 指定主机地址

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

--name 容器的名字

--restart always 总是重启

--volume 指定数据卷

deb6171764b是docker image的id 用来指定使用那个镜像
  • 查看日志(启动失败时查看)
# 查看日志
docker logs -f gitlab

A -> B迁移

从A服务器迁移至B服务器

A 准备

查看Docker卷指向
  • 查看名字和ID
docker images 
  • 根据名字找到挂载
docker inspect gitlab | grep Mount -A 20
# 或
docker inspect 641d16e052b3 | grep Mount -A 20
  • 得到的挂载信息(B创建挂载的时候基于这个目录)
"/data/docker/gitlab/config:/etc/gitlab:rw",
"/data/docker/gitlab/data:/var/opt/gitlab:rw",
"/data/docker/gitlab/logs:/var/log/gitlab:rw",
"/etc/hosts:/etc/hosts:rw"
备份数据(A)
# 进入容器
docker exec -it gitlab /bin/bash
 
# 以下命令在容器的/var/opt/gitlab/backups目录,
# 即我这里的服务器A的/data/docker/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全部服务
gitlab-ctl stop  
# 退出容器执行 
exit
# 停止容器 
docker stop gitlab
将A备份文件传给B或者下载后上传给B
# 上传前面的备份文件和配置文件到对应目录
/home/gitlab/data/backups
/home/gitlab/config
# 将备份文件权限修改为777,不然可能会报权限不足导致恢复备份失败
chmod 777 1598965868_2020_09_01_13.3.2_gitlab_backup.tar

B 接收处理

进入容器停止相关服务,并加载备份文件
# 进入容器
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
启动服务
# 启动服务
gitlab-ctl start

你可能感兴趣的:(弗兰克与Docker,弗兰克与DevOps,docker,gitlab)