当前位置: 首页 > news >正文

Windows的docker中安装gitlab

一.Windows的docker中安装gitlab

1.通过阿里云拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh

2.在本地创建备份数据的目录

mkdir -p D:home/software/gitlab/etc
mkdir -p D:home/software/gitlab/logs
mkdir -p D:home/software/gitlab/data

3.执行docker配置与启动

docker run --detach --publish 8443:443 --publish 8090:80  --publish 8022:22  --name gitlab   --restart always --hostname 192.168.1.108  -v D:\home/software/gitlab/etc:/etc/gitlab -v D:\home/software/gitlab/logs:/var/log/gitlab  -v D:\home/software/gitlab/data:/var/opt/gitlab -v /etc/localtime:/etc/localtime:ro --privileged=true registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh

以上命令注释

# 使用 docker run 命令启动一个 Docker 容器
docker run 
# 以分离(后台)模式运行容器,容器将在后台运行而不会占用当前终端
--detach 
# 将容器内的 443 端口映射到主机的 8443 端口,可用于访问容器内服务的 HTTPS 服务
--publish 8443:443 
# 将容器内的 80 端口映射到主机的 8090 端口,可用于访问容器内服务的 HTTP 服务
--publish 8090:80 
# 将容器内的 22 端口映射到主机的 8022 端口,可用于通过 SSH 访问容器
--publish 8022:22 
# 为容器指定名称为 gitlab,方便后续对容器进行管理和操作
--name gitlab 
# 当 Docker 守护进程启动时,自动重启该容器,确保容器的高可用性
--restart always 
# 为容器指定主机名,这里是 192.168.1.108
--hostname 192.168.1.108 
# 将主机的 D:\home/software/gitlab/etc 目录挂载到容器内的 /etc/gitlab 目录,用于存储 GitLab 的配置文件
-v D:\home/software/gitlab/etc:/etc/gitlab 
# 将主机的 D:\home/software/gitlab/logs 目录挂载到容器内的 /var/log/gitlab 目录,用于存储 GitLab 的日志文件
-v D:\home/software/gitlab/logs:/var/log/gitlab 
# 将主机的 D:\home/software/gitlab/data 目录挂载到容器内的 /var/opt/gitlab 目录,用于存储 GitLab 的数据文件
-v D:\home/software/gitlab/data:/var/opt/gitlab 
# 将主机的 /etc/localtime 目录挂载到容器内的 /etc/localtime 目录,并设置为只读,使容器内的时间与主机时间同步
-v /etc/localtime:/etc/localtime:ro 
# 赋予容器特权,容器内的进程将拥有一些额外的权限,但可能会带来安全风险,需谨慎使用
--privileged=true 
# 指定要使用的 Docker 镜像,这里使用的是 registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 镜像
registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 

4.在同一局域网内网页中执行如下网址即可登录gitlab客户端

192.168.1.108:8090

二.手动备份gitlab数据方法 

1.gitlab中的源码备份非常重要;

2.对 gitlab 进行备份是创建一个包含所有库和附件的归档文件;

3.对备份的恢复只能恢复到与备份时的 gitlab 相同的版本;

4.将 gitlab 迁移到另一台服务器上的最佳方法就是通过备份和还原。

1.使用docker exec命令进入 GitLab 容器

docker exec -it <gitlab_container_name> /bin/bash

 2.在 GitLab 容器内,执行备份命令

gitlab-rake gitlab:backup:create

3.在宿主机内,执行备份命令

docker exec -it <gitlab_container_name> gitlab-rake gitlab:backup:create

4.备份文件将存储在容器内的/var/opt/gitlab/backups目录中,文件名类似于<timestamp>_gitlab_backup.tar,其中<timestamp>是当前的时间戳。

 ​

三.恢复备份

1.删除一个gitlab项目(测试用)

2.停止gitlab,执行如下命令

root@172:/# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
root@172:/# gitlab-ctl stop sidekiq
ok: down: sidekiq: 1s, normally up
root@172:/#

3.确认是否停止,执行如下命令(最后两行的down即说明已停止)

root@172:/# gitlab-ctl status
run: gitlab-workhorse: (pid 246) 27978s; run: log: (pid 239) 27978s
run: logrotate: (pid 18723) 2779s; run: log: (pid 242) 27978s
run: nginx: (pid 248) 27978s; run: log: (pid 241) 27978s
run: postgresql: (pid 251) 27978s; run: log: (pid 244) 27978s
run: redis: (pid 252) 27978s; run: log: (pid 245) 27978s
down: sidekiq: 166s, normally up; run: log: (pid 243) 27978s
down: unicorn: 180s, normally up; run: log: (pid 240) 27978s
root@172:/#

4.接下来执行 gitlab 恢复操作,文件名只要数字部分就可以了

gitlab-rake gitlab:backup:restore BACKUP=备份文件名

root@172:/# gitlab-rake gitlab:backup:restore BACKUP=1737450440_gitlab_backup
The specified backup doesn't exist!
root@172:/#

 5.重新启动gitlab

root@172:/# gitlab-ctl restart
ok: run: gitlab-workhorse: (pid 52065) 0s
ok: run: logrotate: (pid 52073) 1s
ok: run: nginx: (pid 52079) 0s
ok: run: postgresql: (pid 52101) 1s
ok: run: redis: (pid 52109) 0s
ok: run: sidekiq: (pid 52113) 0s
ok: run: unicorn: (pid 52118) 1s
root@172:/#

6.确认是否启动

root@172:/# gitlab-ctl status
run: gitlab-workhorse: (pid 52065) 61s; run: log: (pid 239) 28709s
run: logrotate: (pid 52073) 61s; run: log: (pid 242) 28709s
run: nginx: (pid 52079) 60s; run: log: (pid 241) 28709s
run: postgresql: (pid 52101) 60s; run: log: (pid 244) 28709s
run: redis: (pid 52109) 59s; run: log: (pid 245) 28709s
run: sidekiq: (pid 52113) 59s; run: log: (pid 243) 28709s
run: unicorn: (pid 52118) 59s; run: log: (pid 240) 28709s
root@172:/#

7. 恢复完成

四.自动备份gitlab数据方法

1.在宿主机内,创建批处理文件, gitlab_backup_sunday.bat

@echo off
setlocal

REM 设置 Gitlab 容器名称
set GITLAB_CONTAINER_NAME=<gitlab_container_name>

REM 设置备份日志文件路径
set LOG_FILE=D:\home\software\gitlab\data\backups\backup_log.txt

REM 开始备份操作
echo Starting Gitlab backup at %DATE% %TIME% >> %LOG_FILE%

REM 以下是核心备份命令
docker exec -it %GITLAB_CONTAINER_NAME% gitlab-rake gitlab:backup:create

REM 结束备份操作
echo Backup completed at %DATE% %TIME% >> %LOG_FILE%

endlocal

2.使用方法

  1. 将上述代码保存为一个 .bat 文件,例如 gitlab_backup_sunday.bat
  2. 打开 Windows 的 “任务计划程序”:
    • 搜索并打开 “任务计划程序”。
    • 在 “任务计划程序” 中,点击 “创建任务”。
    • 在 “常规” 选项卡中,输入任务的名称,如 “Gitlab 周日备份任务”,并选择一个具有足够权限的用户账户(通常是管理员账户)。
    • 在 “触发器” 选项卡中,点击 “新建”,设置触发器的详细信息:
      • 开始任务设置为 “按预定计划”。
      • 选择 “每周”,在 “周日” 上打勾,将开始时间设置为 02:00:00。
    • 在 “操作” 选项卡中,点击 “新建”,选择 “启动程序”,并浏览找到你保存的 gitlab_backup_sunday.bat 脚本

 

 

 

五.手动本地备份gitlab镜像 

在 Windows 上使用 Docker 时,每个 Docker 镜像实际上存储在 Docker 的存储系统中,其具体位置取决于 Docker 的安装和配置,但通常情况下,你不需要直接操作该位置,因为 Docker 会自动管理镜像的存储和使用。以下是一些有关 Docker 镜像在 Windows 上存储的详细信息:

1、Docker 存储位置的一般情况
Docker 在 Windows 上使用 Windows 容器时,镜像存储在 Windows 的文件系统中,但位置通常隐藏在 Docker 的内部存储结构中。
对于 Docker Desktop,它使用一个名为 vhdx 的虚拟硬盘文件(Hyper-V 技术)来存储镜像、容器和其他 Docker 相关数据。这个文件通常位于 C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx。
2、查看 Docker 镜像信息
你可以使用 Docker 命令行工具来查看和管理镜像信息,而无需直接访问存储位置。例如:
查看所有本地 Docker 镜像:docker images
这个命令将列出所有已下载到本地的 Docker 镜像,包括镜像的仓库名、标签、镜像 ID、创建时间和大小等信息。
3、存储位置的限制和注意事项
直接操作 Docker 的存储位置可能会导致 Docker 出现不可预测的问题,如数据损坏或丢失,因为 Docker 期望它的存储结构保持完整。
如果你需要备份或迁移 Docker 镜像,可以使用 Docker 提供的命令和工具,而不是直接操作存储位置。

1.保存一个镜像为一个 .tar 文件

docker save -o <output_file.tar> <image_name:tag>

 这个命令会将指定的镜像保存为一个 .tar 文件,你可以将其存储在 Windows 的任何位置。

2.加载一个已保存的镜像

docker load -i <input_file.tar>

这个命令可以将之前保存的 .tar 文件加载回 Docker 环境。

相关文章:

Windows的docker中安装gitlab

一.Windows的docker中安装gitlab 1.通过阿里云拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 2.在本地创建备份数据的目录 mkdir -p D:home/software/gitlab/etc mkdir -p D:home/software/gitlab/logs mkdir -p D:home/software/gitlab/dat…...

基于微信小程序的健身管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

windows 安装 mysql 教程

一、下载 点开下面的链接&#xff1a; https://downloads.mysql.com/archives/community/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.28 的软件本体了(就是…...

Vue2+OpenLayers初始化高德地图

目录 一、案例截图 二、完整代码 一、案例截图 二、完整代码 一键复制即可运行&#xff1a; <template><div id"map-container"></div> </template> <script> import { Map, View } from ol import { Tile as TileLayer } from ol…...

六、深入了解DI

依赖注入是⼀个过程&#xff0c;是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源&#xff0c;⽽资源指的就是对象. 在上⾯程序案例中&#xff0c;我们使⽤了 Autowired 这个注解&#xff0c;完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…...

IMX6ull项目环境配置

文件解压缩&#xff1a; .tar.gz 格式解压为 tar -zxvf .tar.bz2 格式解压为 tar -jxvf 2.4版本后的U-boot.bin移植进SD卡后&#xff0c;通过串口启动配置开发板和虚拟机网络。 setenv ipaddr 192.168.2.230 setenv ethaddr 00:04:9f:…...

Edge-TTS在广电系统中的语音合成技术的创新应用

Edge-TTS在广电系统中的语音合成技术的创新应用 作者&#xff1a;本人是一名县级融媒体中心的工程师&#xff0c;多年来一直坚持学习、提升自己。喜欢Python编程、人工智能、网络安全等多领域的技术。 摘要 随着人工智能技术的快速发展&#xff0c;文字转语音&#xff08;Te…...

芸众商城小程序会员页面部分图标不显示问题解决办法

我遇到的问题 如下图所示&#xff0c;会员中心这里的图标在小程序端显示异常。但是在网页端又是能够正常显示的。 小程序端截图&#xff1a; 网页端截图&#xff1a; 我的解决方法 检查使用的小程序版本&#xff0c;比如这里使用的是1.2.238版本的小程序&#xff0c;最后…...

手机app如何跳过无障碍权限实现弹框自动点击-ADB连接专题

手机app如何跳过无障碍权限实现弹框自动点击 --ADB连接专题 一、前言 我们在前期的时候&#xff0c;在双SIM卡进行协同外呼和SIM卡切换时&#xff0c;对如何在手机中“执行批处理脚本做自动点击”的内容进行预研&#xff0c;力图使用事件触发和坐标点击等方式来实现手机安装…...

「 机器人 」扑翼飞行器控制的当前挑战与后续潜在研究方向

前言 在扑翼飞行器设计与控制方面,虽然已经取得了显著的进步,但在飞行时间、环境适应性、能量利用效率及模型精度等方面依旧存在亟待解决的挑战。以下内容概括了这些挑战和可能的改进路径。 1. 当前挑战 1.1 飞行时间短 (1)主要原因 能源存储有限(电池容量小)、驱动系…...

Vue入门(Vue基本语法、axios、组件、事件分发)

Vue入门 Vue概述 Vue (读音/vju/&#xff0c;类似于view)是一套用于构建用户界面的渐进式框架&#xff0c;发布于2014年2月。与其它大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三…...

DELL EDI:需求分析及注意事项

Dell 的 EDI 需求分析 1.对接 Dell 需要使用的 EDI 传输协议 Dell 支持的传输方式包括&#xff1a; AS2&#xff08;Applicability Statement 2&#xff09;&#xff1a;主要用于安全可靠的数据传输&#xff0c;在使用 AS2 时&#xff0c;所有数据都通过 HTTPS 或 HTTP 协议…...

计算机网络 (62)移动通信的展望

一、技术发展趋势 6G技术的崛起 内生智能&#xff1a;6G将强调自适应网络架构&#xff0c;通过AI驱动的智能算法提升通信能力。例如&#xff0c;基于生成式AI的6G内生智能架构将成为重要研究方向&#xff0c;实现低延迟、高效率的智能通信。信息编码与调制技术&#xff1a;新型…...

java 中多线程、 队列使用实例,处理大数据业务

场景&#xff1a; 从redis 订阅数据 调用线程来异步处理数据 直接上代码 定义线程管理类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org…...

13.图形程序接口(Graphics API)

**图形程序接口&#xff08;Graphics API&#xff09;**是计算机图形学中的一个重要概念&#xff0c;可以理解为“程序员与GPU之间的桥梁”。用通俗易懂的方式来解释&#xff1a; 通俗解释&#xff1a;图形API就像翻译官 想象你是一个老板&#xff08;程序员&#xff09;&…...

PPT自动化 python-pptx -7: 占位符(placeholder)

占位符&#xff08;placeholder&#xff09;是演示文稿中用于容纳内容的预格式化容器。它们通过让模板设计者定义格式选项&#xff0c;简化了创建视觉一致幻灯片的过程&#xff0c;同时让最终用户专注于添加内容。这加快了演示文稿的开发速度&#xff0c;并确保幻灯片之间的外观…...

Pyecharts之图表组合与布局优化

在数据可视化中&#xff0c;我们经常需要将多个图表组合在一起&#xff0c;以展示不同维度的数据或者进行对比分析。同时&#xff0c;合理的布局能够提升图表的可读性和用户体验。Pyecharts 提供了强大的组件和方法&#xff0c;让我们可以轻松实现图表的组合和布局优化。本篇将…...

流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理

概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长&#xff0c;企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构&#xff0c;帮助企业快速实现多源数据的采集、…...

Android vendor.img中文件执行权问题

问题 Android 9、11往vendor.img增加文件&#xff0c;烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找&#xff0c;终于找到了问题的根源&#xff0c;谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件&#xff0c;fs_confi…...

关于使用微服务的注意要点总结

一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑&#xff0c;笔者就曾遇到过一个公司的项目&#xff0c;是从外部采购回来的&#xff0c;微服务划分为十几个应用&#xff0c;我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大&#xff0c;而且二次开发的…...

C++17 新增属性详解

文章目录 1. [[fallthrough]]用途示例应用场景 2. [[maybe_unused]]用途示例应用场景 3. [[nodiscard]]用途示例应用场景 总结 C17标准引入了多个新的属性&#xff08;Attributes&#xff09;&#xff0c;这些属性为代码提供了更丰富的语义表达能力&#xff0c;同时帮助编译器生…...

使用python-docx包进行多文件word文字、字符批量替换

1、首先下载pycharm。 2、改为中文。 3、安装python-docx包。 搜索包名字&#xff0c;安装。 4、新建py文件&#xff0c;写程序。 from docx import Documentdef replace1(array1):# 替换词典&#xff08;标签值按实际情况修改&#xff09;dic {替换词1: array1[0], 替换…...

15_业务系统基类

创建脚本 SystemRoot.cs 因为 业务系统基类的子类 会涉及资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 所以在业务系统基类 提取引用资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 并调用单例初始化 using UnityEngine; // 功能 : 业务系统基类 public c…...

Pyecharts之散点图的视觉扩展

在数据可视化中&#xff0c;散点图是一种强大的工具&#xff0c;可用于展示数据点在二维平面上的分布情况。通过添加各种视觉组件&#xff0c;我们可以让散点图变得更加丰富和具有表现力&#xff0c;更能反映数据的多维度特征。本文将详细解读如何为散点图添加不同的视觉组件&a…...

Java学习教程,从入门到精通,JDBC删除数据库语法知识点(101)

一、JDBC删除数据库语法知识点 1. 概述 JDBC&#xff08;Java Database Connectivity&#xff09;是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口&#xff0c;提供了诸如查询和更新数据库中数据的方法。 在JDBC中&#xff0c;删除数据库的操作主要是通过执行…...

Baklib如何推动企业知识管理的创新与转型探讨

内容概要 在当今快速发展的数字化时代&#xff0c;企业需要不断适应变化&#xff0c;以保持竞争优势。Baklib作为一款企业知识管理中台&#xff0c;扮演着推动数字化转型的重要角色。它通过提供一个集成的知识管理平台&#xff0c;帮助企业高效管理和共享内部及外部的知识资源…...

【算法】递归型枚举与回溯剪枝初识

递归型枚举与回溯剪枝初识 1.枚举子集2.组合型枚举3.枚举排列4.全排列问题 什么是搜索&#xff1f;搜索&#xff0c;是一种枚举&#xff0c;通过穷举所有的情况来找到最优解&#xff0c;或者统计合法解的个数。因此&#xff0c;搜索有时候也叫作暴搜。搜索一般分为深度优先搜索…...

无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整

无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整 0 前言 之前文章添加了一个自定义的模块&#xff0c;本篇文章在之前的自定义模块中&#xff0c;添加两个自定义参数 使用QGC显示出来&#xff0c;并通过QGC调整参数值&#xff0c;代码实现参数更新 新增的参…...

《CPython Internals》阅读笔记:p356-p359

《CPython Internals》学习第 19天&#xff0c;p356-p359 总结&#xff0c;总计 4 页。 一、技术总结 1.benchmark suite The benchmark suite is the tool to use when comparing the complete performance of Python. The Python Benchmark suite is a collection of Pyth…...

Linux--权限

Linux系统的权限管理是保障系统安全的重要机制&#xff0c;以下详细讲解权限相关概念及操作指令&#xff1a; 一、基础权限机制 1. 权限的三元组&#xff0c;读&#xff08;r&#xff09;、写&#xff08;w&#xff09;、执行&#xff08;x&#xff09; 每个文件或目录有三组…...