在linux系统的docker中安装GitLab
一、安装GitLab:
在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。

1、安装项目
这里没有选第一个,下载安装中文版了,安装时间比较长,需要耐心等待。
![]()
2.创建挂载目录
mkdir -p /usr/local/gitlab/etc
mkdir -p /usr/local/gitlab/log
mkdir -p /usr/local/gitlab/data
3.修改目录权限
chmod 777 /usr/local/gitlab/etc
chmod 777 /usr/local/gitlab/log
chmod 777 /usr/local/gitlab/data
4.启动gitlab,执行docker
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab -v /www/gitlab/etc:/etc/gitlab -v /www/gitlab/log:/var/log/gitlab -v /www/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /mydata/gitlab/etc:/etc/gitlab -v /mydata/gitlab/log:/var/log/gitlab -v /mydata/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
这个命令的意思如下:
docker run \
-d #后台运行,全称:detach
-p 8443:443 #将容器的内部端口8443映射到外部端口443上,外界会先访问443端口到达指定位置,然后发现443映射的是docker里的8443端口,就会继续访问8443端口,然后根据设置做出对应的处理。
-p 8090:80 #将容器的内部端口8090映射到外部端口80上,原理同上。
-p 8022:22 #将容器的内部端口8022映射到外部端口22上,原理同上。
--restart always #容器自启动
--name gitlab #设置容器的名称为gitlab
-v /usr/local/gitlab/etc:/etc/gitlab #将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,一般挂载到一个比较大的磁盘上,防止后面出现磁盘满了的情况。
-v /usr/local/gitlab/log:/var/log/gitlab #原理同上。
-v /usr/local/gitlab/data:/var/opt/gitlab #原理同上。
--privileged=true #让容器获取宿主机root权限
twang2218/gitlab-ce-zh #镜像的名称,这里也可以写镜像的id。
5、查看gitlab是否已经启动,
如果后面跟上-a参数,则会把没启动的容器也显示出来。
docker ps -a

二、配置gitlab
1、首先进入容器,
里面的gitlab是容器的名称,就是上图里NAMES下面的那个信息。
docker exec -it gitlab bash
![]()
看到前面变成这样就说明进到容器里了。
2、修改gitlab.rb文件:
//先进入到gitlab目录
cd /etc/gitlab
//然后编辑gitlab.rb文件
vim gitlab.rb
![]()
执行vim命令后效果是这样:

3、修改gitlab.rb文件中的IP和端口号,修改external_url后面的值,这个值是IP地址或者域名,不用加端口号。

4、保存,在修改完毕后按一下esc键,然后输入:qw后按回车键保存文件。

将一下内容复制到gitlab.rb文件(注意修改成自己的ip),修改完成后 :wq 保存退出
external_url 'http://xx.xx.xx.xx'
gitlab_rails['gitlab_ssh_host'] = '192.168.XX.XX'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
external_url 'http://xx.xx.xx.xx'
gitlab_rails['gitlab_ssh_host'] = '192.168.XX.XX'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
3、配置gitlab.yml文件。
//文件路径:/opt/gitlab/embedded/service/gitlab-rails/config
//先进入到config目录下
cd /opt/gitlab/embedded/service/gitlab-rails/config
![]()
//打开编辑gitlab.yml文件
vim gitlab.yml

//修改host与上面.rb文件里的external_url一致。
//修改port为80,这里定义的端口号是80,说明通过80端口可以访问到,在容器运行的时候使用了-p 8090:80进行端口映射
,就是将外部端口8090映射到docker容器的80端口上,外面通过8090端口访问时就被转到docker的80端口上了,这里定义的gitlab端口是80,就会被监听到,然后执行对应的操作。
6、重启docker中的gitlab,
因为此时已经进入到docker的gitlab容器中了,所以可以执行容器内重启服务命令:
gitlab-ctl restart
7、退出容器命令exit:

8、使用浏览器打开gitlab
,网址是gitlab.rb配置文件中定义的external_url的值,端口号是运行容器时-p后面定义的端口号,这里是:http://gitlab.wuniuai.com:8090,第一次访问账号和密码都是root,会让修改密码,改好后就可以正常使用了

9、查看容器详细信息
,可以查看gitlab的运行状态、端口映射情况、文件挂载情况,等于是把执行docker run时的所有信息都展示出来了:
docker inspect gitlab


从上方可以看到挂载了三个目录,如果要转移数据就需要把三个目录都转移到需要的位置,然后重新执行docker run运行和设置这个容器,run里的名称如果已经存在则无法执行,要么用新名称,要么使用docker rm 容器名称,把原来的容器删掉。
二、常用命令:
1、容器外停止:
docker stop gitlab //这里的gitlab是执行docker run时--name后面设置的名字。
2、容器外重启:
docker restart gitlab
3、进入容器内部命令行:
docker exec -it gitlab bash
4、容器内部命令行中应用配置
,让修改后的配置生效:
gitlab-ctl reconfigure
5、容器内部命令行中重启应用:
gitlab-ctl restart
6、容器外查看正在运行的容器,返回的有ID和名称,这两个值都可以操作指定的容器:
docker ps
7、容器外查看所有容器,包含正在运行的和未运行的:
docker ps -a
8、容器外查看所有镜像:
docker images
9、容器外删除容器:
docker rm gitlab //这里的gitlab是容器的名称,用这个容器的id也可以,效果都一样。
10、查看指定容器的日志记录:
docker logs gitlab //这里是查看gitlab的日志信息,会显示日志文件中的所有内容。
11、修改gitlab.rb配置文件
vi /etc/gitlab/gitlab.rb
把对应的修改的#去掉,然后修改如下
external_url 'http://127.0.0.1:8080' 需要和创建容器指定的端口号一致
gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 222
nginx['listen_port'] =8080
12、进gitlab容器重启配置服务
docker exec -it gitlab /bin/bash #进去gitlab容器的命令
gitlab-ctl reconfigure #重置gitlab客户端的命令
等待一会儿完成后,exit退出即可;
13、重启gitlab容器
$ docker restart gitlab
14、根据设置好的Ip地址或者域名访问gitlab
http://ip:8080
进入以后会让修改密码,修改完成后登入即可;
15、运行项目创建项目
默认的登录名是root
使用docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password 可以查看root的默认密码
16、进入系统后,点击创建一个项目



所以在使用的时候需要加上 8881端口号 否则是访问不到的 请求被拒绝
使用的时候是 http://192.168.66.71:8881/root/myweb.git
17、使用Git拉去远程项目需要绑定密钥
点击右上角头像设置SSH密钥,输入id_rsa.pub的内容,如下图所示:
保存后的结果。

保存后的结果。

18、拉取或者上传项目之前
请先初始化本地git仓库,创建一个文件夹,在指定的位置初始化本地git仓库,便于规范性的操作。克隆拉取命令省略;
git init
git clone ssh://git@192.168.66.71:8222/root/myweb.git
git clone http://192.168.66.71:8881/root/myweb.git
19、Gitlab中实现CI/CD,需要安装gitlab-runner
docker pull gitlab/gitlab-runner:latest
相关文章:
在linux系统的docker中安装GitLab
一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …...
Python面试常见问题及答案12
问题: 请解释Python中的GIL(全局解释器锁)是什么? ○ 答案: GIL是Python解释器中的一种机制,用于确保任何时候只有一个线程在执行Python字节码。这在多线程场景下可能影响性能优化,但对于单线程…...
从0-1开发一个Vue3前端系统页面-9.博客页面布局
本节主要实现了博客首页界面的基本布局并完善了响应式布局,因为完善了响应式布局故对前面的页面布局有所改动,这里会将改动后的源码同步上传。 1.对页面头部的用户信息进行设计和美化 布局设计参考 :通常初级前端的布局会通过多个div划分区域…...
[手机Linux] 六,ubuntu18.04私有网盘(NextCloud)安装
一,LNMP介绍 LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…...
白话java设计模式
创建模式 单例模式(Singleton Pattern): 就是一次创建多次使用,它的对象不会重复创建,可以全局来共享状态。 工厂模式(Factory Method Pattern): 可以通过接口来进行实例化创建&a…...
助力 Tuanjie OpenHarmony 开发:如何使用工具包 Hilog 和 SDK Kits Package?
随着团结引擎从 1.0.0 迭代至 1.3.0,越来越多的开发者开始使用团结引擎开发 OpenHarmony 应用。 在开发的过程中,我们也收到了大量反馈,尤其是在日志、堆栈和性能数据方面,这些信息对开发和调试过程至关重要。同时,我…...
NSDT 3DConvert:高效实现大模型文件在线预览与转换
NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…...
电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据
电商数据采集可以通过多种方式完成,其中包括人工采集、使用电商平台提供的API接口、以及利用爬虫技术等自动化工具。以下是一些常用的电商数据采集方法: 人工采集:人工采集主要是通过基本的“复制粘贴”的方式在电商平台上进行数据的收集&am…...
VUE+Node.js+mysq实现响应式个人博客|项目初始化+路由配置+基础组件搭建
Day 1 开发文档:项目初始化与基础架构搭建 一、项目初始化 1. 创建项目 首先,我们使用 Vite 创建一个基于 Vue 3 的项目: # 创建项目 npm create vitelatest my-blog -- --template vue # 这条命令会创建一个名为 my-blog 的新项目&#…...
Python如何正确解决reCaptcha验证码(9)
前言 本文是该专栏的第73篇,后面会持续分享python爬虫干货知识,记得关注。 我们在处理某些国内外平台项目的时候,相信很多同学或多或少都见过,如下图所示的reCaptcha验证码。 而本文,笔者将重点来介绍在实战项目中,遇到上述中的“reCaptcha验证码”,如何正确去处理并解…...
web3跨链预言机协议-BandProtocol
项目简介 Band Protocol 项目最初于 2017年成立并建立在 ETH 之上。后于2020年转移到了 Cosmos 网络上,基于 Cosmos SDK 搭建了一条 Band Chain 。这是一条 oracle-specific chain,主要功能是提供跨链预言机服务。Cosmos生态上第一个,也是目…...
JAVA将集合切分成指定份数(简易)
JAVA将集合切分成指定份数 主要方法 /** * 主要方法* param list 切分的集合* param count 切成的份数* return*/ public static List<List> splitList(List list,int count){if(count <0 ){return Lists.newArrayList();}List<List> result Lists.newArrayL…...
深度神经网络(DNN)在时序预测中的应用与缺陷
目录 编辑 一、DNN在时序预测中的应用 二、DNN的缺陷 三、技术挑战与未来趋势 四、结论 随着大数据时代的到来,深度学习技术在时序预测领域扮演着越来越重要的角色。深度神经网络(DNN)因其强大的非线性拟合能力和自动特征提取能力&…...
springboot445新冠物资管理(论文+源码)_kaic
摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的新冠物资管…...
C++算法第十一天
本篇文章我们继续学习动态规划 目录 第一题 题目链接 题目解析 代码原理 代码编写 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第四题 题目链接 题目解析 代码原理 代码编写 第五题 题目链接 题目解析 代…...
常 用 类
一、 Object 类 1. Object 类的介绍 (1) Object 类位于 java.lang 包中,是继承关系的根类、超类,是所有类的父类 ( 直接的父类或是间接父类 ) (2) Object 类型的引用可以用于存储任意类型的对象。 (3) Object 类中定义方法,所有类都可以…...
ACL(访问控制列表)
ACL技术概述 • 随着网络的飞速发展,网络安全和网络服务质量 QoS ( Quality of Service )问题日益突出。 ▫ 园区重要服务器资源被随意访问,园区机密信息容易泄露,造成安全隐患。 ▫ Internet 病毒肆意侵略园区内网&am…...
json字符串转json
问题 Json格式化后,存在各种\n ,\r,以及空格,怎么办? 直接replaceAlll(“\s”,“”) 吗? 解决办法: //使用hutool的jsonutil工具,直接将其转换为json,再转string, //这样就不需要使用 各种re…...
GPT-Omni 与 Mini-Omni2:创新与性能的结合
近年来,随着人工智能技术的飞速发展,各种模型和平台应运而生,以满足从个人用户到企业级应用的多样化需求。在这一领域,GPT-Omni 和 Mini-Omni2 是两款备受瞩目的技术产品,它们凭借独特的设计和强大的功能,在…...
探秘 JSON:数据交互的轻盈使者
文章目录 一、JSON是什么二、JSON的语法规则三、应用场景四、性能优化五、总结 一、JSON是什么 JSON(JavaScript Object Notation)即 JavaScript 对象表示法,是一种轻量级的数据交换格式。JSON 以键值对的形式组织数据,键是字符串…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
