在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 以键值对的形式组织数据,键是字符串…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
