当前位置: 首页 > 知识库问答 >
问题:

Gitlab CI备份因重新启动Docker desktop而丢失

任昊阳
2023-03-14

我有一个docker桌面安装在我的windows pc上。在这个平台上,我在一个docker容器上自托管gitlab。今天,我尝试通过键入以下命令来备份我的gitlab:

docker exec -t <my-container-name> gitlab-backup create

运行此命令后,备份成功,并看到一条消息,表示备份已完成。然后我重新启动了docker桌面,等待容器启动。当容器启动时,我访问了gitlab接口,但看到了一个新的gitlab实例。

然后键入以下命令以恢复备份:

docker exec-it

但我们看到了这样的信息:

在/var/opt/gitlab/backups中找不到备份

请确保文件名以_结尾gitlab_backup.tar

是什么原因导致我在gitlab官方网站上看到这些命令而错误地使用了这些命令。

我把这个放在码头上了。yml文件:

version: "3.6" 
services:
  web:
    image: 'gitlab/gitlab-ce'
    container_name: 'gitlab'
    restart: always
    hostname: 'localhost'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://localhost:9090'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    networks:
      - gitlab-network
    ports:
      - '80:80'
      - '443:443'
      - '9090:9090'
      - '2224:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'

networks:
  gitlab-network:
    name: gitlab-network

我使用此命令运行容器:

docker组装--构建--在容器退出时中止


共有2个答案

贺跃
2023-03-14

您是否尝试提供备份文件的名称,作为omnibus安装?当我在Docker中恢复备份时,我基本上使用omnibus指令,但使用docker exec来完成。以下是我在笔记中使用的命令。

docker exec -it gitlab gitlab-ctl stop unicorn  
docker exec -it gitlab gitlab-ctl stop sidekiq  
docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1541603057_2018_11_07_10.3.4 
docker exec -it gitlab gitlab-ctl start  
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=true

看起来他们在某个时候添加了一个gitlab备份命令,所以你可能可以用它来代替gitlab rake。

袁晋鹏
2023-03-14

如果您使用卷启动容器,请尝试查看备份的C:\ProgramData\docker\volume

备份通常位于容器内的:/var/opts/gitlab/Backup。因此,希望您将/var/0025/gitlab映射到卷或绑定挂载。

 类似资料:
  • 问题内容: 我正在尝试为我的Java游戏添加重启/重播功能。当前在我的Game类(GUI和游戏被初始化的地方)中,我有: 游戏对象包含整个游戏窗口的GUI,并包含各种对象(例如实际游戏窗口,计分板,倒数计时器等)。 我想添加一个功能,如果他们单击GUI上的重新启动按钮或游戏结束后,游戏将重新启动(以及倒计时和计分)。我确实意识到最好重新实例化对象(计分,倒数),但是一旦实例化,它们便成为我的GUI

  • 我的应用程序允许用户查看一些从画廊或其他位置选择的图像。我通过以下方式请求图像的URI: 然后获取onActivityResult(int requestCode,int resultCode,Intent data)中的URI,并访问这些图像,将它们放到我的应用程序的视图中,方法是: 当应用程序完成时,我通过以下方式将所有URI保存为字符串: 在Android7.1中,该应用程序不再拥有这些UR

  • 问题内容: 如果我的进程正在加载.so库,并且该库有新版本可用,是否可以在不重新启动进程的情况下切换到新库?还是答案取决于诸如库中现有功能之一是否有参数更改之类的事情? 我正在一个相当大的系统中工作,该系统运行100多个进程,每个系统加载10多个库。这些库提供特定的功能,并由独立的团队提供。因此,当其中一个库发生更改(可以说是针对错误修复)时,理想的做法是在后台发布它而不影响运行的过程。可能吗 ?

  • 我在3个节点上以完全分布式模式配置HBase 1.0.1.1。Node-1应该运行主服务器zookeeper和RegionServer;Node-2应该运行zookeeper&regionserver;Node-3应该运行Backup Master、zookeeper和RegionServer。我在安装过程中遇到了两个问题,需要您的帮助-1)当我运行start-hbase.sh时,我看到“hmas

  • 我的组织需要对我们的定制程度很高的Jenkins实例进行备份。在研究了备份Jenkins的不同方法后,我们决定使用xcopy复制整个Jenkins目录,然后将备份移动到另一台机器上的新实例。(使用xcopy的原因是它是在每个作业中保留符号链接文件的唯一方法。) 以下是我采取的步骤: 批处理文件使用xcopy每晚从旧机器复制整个目录 我在新服务器上安装了一个新的Jenkins实例 我阻止Jenkin