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
setlocalREM 设置 Gitlab 容器名称
set GITLAB_CONTAINER_NAME=<gitlab_container_name>REM 设置备份日志文件路径
set LOG_FILE=D:\home\software\gitlab\data\backups\backup_log.txtREM 开始备份操作
echo Starting Gitlab backup at %DATE% %TIME% >> %LOG_FILE%REM 以下是核心备份命令
docker exec -it %GITLAB_CONTAINER_NAME% gitlab-rake gitlab:backup:createREM 结束备份操作
echo Backup completed at %DATE% %TIME% >> %LOG_FILE%endlocal
2.使用方法
- 将上述代码保存为一个
.bat文件,例如gitlab_backup_sunday.bat。 - 打开 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+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
windows 安装 mysql 教程
一、下载 点开下面的链接: https://downloads.mysql.com/archives/community/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 8.0.28 的软件本体了(就是…...
Vue2+OpenLayers初始化高德地图
目录 一、案例截图 二、完整代码 一、案例截图 二、完整代码 一键复制即可运行: <template><div id"map-container"></div> </template> <script> import { Map, View } from ol import { Tile as TileLayer } from ol…...
六、深入了解DI
依赖注入是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象. 在上⾯程序案例中,我们使⽤了 Autowired 这个注解,完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…...
IMX6ull项目环境配置
文件解压缩: .tar.gz 格式解压为 tar -zxvf .tar.bz2 格式解压为 tar -jxvf 2.4版本后的U-boot.bin移植进SD卡后,通过串口启动配置开发板和虚拟机网络。 setenv ipaddr 192.168.2.230 setenv ethaddr 00:04:9f:…...
Edge-TTS在广电系统中的语音合成技术的创新应用
Edge-TTS在广电系统中的语音合成技术的创新应用 作者:本人是一名县级融媒体中心的工程师,多年来一直坚持学习、提升自己。喜欢Python编程、人工智能、网络安全等多领域的技术。 摘要 随着人工智能技术的快速发展,文字转语音(Te…...
芸众商城小程序会员页面部分图标不显示问题解决办法
我遇到的问题 如下图所示,会员中心这里的图标在小程序端显示异常。但是在网页端又是能够正常显示的。 小程序端截图: 网页端截图: 我的解决方法 检查使用的小程序版本,比如这里使用的是1.2.238版本的小程序,最后…...
手机app如何跳过无障碍权限实现弹框自动点击-ADB连接专题
手机app如何跳过无障碍权限实现弹框自动点击 --ADB连接专题 一、前言 我们在前期的时候,在双SIM卡进行协同外呼和SIM卡切换时,对如何在手机中“执行批处理脚本做自动点击”的内容进行预研,力图使用事件触发和坐标点击等方式来实现手机安装…...
「 机器人 」扑翼飞行器控制的当前挑战与后续潜在研究方向
前言 在扑翼飞行器设计与控制方面,虽然已经取得了显著的进步,但在飞行时间、环境适应性、能量利用效率及模型精度等方面依旧存在亟待解决的挑战。以下内容概括了这些挑战和可能的改进路径。 1. 当前挑战 1.1 飞行时间短 (1)主要原因 能源存储有限(电池容量小)、驱动系…...
Vue入门(Vue基本语法、axios、组件、事件分发)
Vue入门 Vue概述 Vue (读音/vju/,类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三…...
DELL EDI:需求分析及注意事项
Dell 的 EDI 需求分析 1.对接 Dell 需要使用的 EDI 传输协议 Dell 支持的传输方式包括: AS2(Applicability Statement 2):主要用于安全可靠的数据传输,在使用 AS2 时,所有数据都通过 HTTPS 或 HTTP 协议…...
计算机网络 (62)移动通信的展望
一、技术发展趋势 6G技术的崛起 内生智能:6G将强调自适应网络架构,通过AI驱动的智能算法提升通信能力。例如,基于生成式AI的6G内生智能架构将成为重要研究方向,实现低延迟、高效率的智能通信。信息编码与调制技术:新型…...
java 中多线程、 队列使用实例,处理大数据业务
场景: 从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)
**图形程序接口(Graphics API)**是计算机图形学中的一个重要概念,可以理解为“程序员与GPU之间的桥梁”。用通俗易懂的方式来解释: 通俗解释:图形API就像翻译官 想象你是一个老板(程序员)&…...
PPT自动化 python-pptx -7: 占位符(placeholder)
占位符(placeholder)是演示文稿中用于容纳内容的预格式化容器。它们通过让模板设计者定义格式选项,简化了创建视觉一致幻灯片的过程,同时让最终用户专注于添加内容。这加快了演示文稿的开发速度,并确保幻灯片之间的外观…...
Pyecharts之图表组合与布局优化
在数据可视化中,我们经常需要将多个图表组合在一起,以展示不同维度的数据或者进行对比分析。同时,合理的布局能够提升图表的可读性和用户体验。Pyecharts 提供了强大的组件和方法,让我们可以轻松实现图表的组合和布局优化。本篇将…...
流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理
概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长,企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构,帮助企业快速实现多源数据的采集、…...
Android vendor.img中文件执行权问题
问题 Android 9、11往vendor.img增加文件,烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找,终于找到了问题的根源,谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件,fs_confi…...
关于使用微服务的注意要点总结
一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑,笔者就曾遇到过一个公司的项目,是从外部采购回来的,微服务划分为十几个应用,我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大,而且二次开发的…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...
