飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
目录
一、安装及配置docker
1、卸载docker相关包及删除相关配置文件
2、安装二进制docker
1.下载软件包
2.解压
3.修改镜像加速地址
4.修改profile文件
5.启动docker
6.docker常用命令
二、安装并启动gitlab镜像
1.安装gitlab镜像
1.查询满足使用需求的gitlab版本
2.下载镜像
2.运行gitlab及修改配置
1.运行gitlab
2.配置
3.验证测试
4.浏览器测试
3.修改外部访问端口(docker对gitlab容器的映射)
1.方法1:删除原有容器,重建新容器
2. 方法2 :修改容器配置文件,重启docker服务
3. 方法3: docker commit新构镜像
4.密码
1.默认密码
2.修改root密码
一、安装及配置docker
1、卸载docker相关包及删除相关配置文件
apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
apt-get autoremove docker-ce-*
dpkg -l | grep docker
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker/*docker --version #验证是否卸载成功
reboot #重启服务器
2、安装二进制docker
1.下载软件包
wget -c 0 https://download.docker.com/linux/static/stable/aarch64/docker-19.03.9.tgz
2.解压
tar -zxvf docker-19.03.9.tgz -C /usr/bin
3.修改镜像加速地址
vim /etc/docker/daemon.json{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
4.修改profile文件
# vim /etc/profile #末尾添加如下代码export PATH=/usr/bin/docker:$PATH# source /etc/profile #刷新profile文件
5.启动docker
dockerd --data-root=/var/lib/docker & #启动dockerdocker version #查询版本验证docker是否安装成功
6.docker常用命令
docker常用命令
二、安装并启动gitlab镜像
1.安装gitlab镜像
1.查询满足使用需求的gitlab版本
Docker官方仓库
在仓库中查询gitlab,因为需要区分构建后的架构,查找自己需要使用的CPU架构版本,飞腾为arm64架构,这里选择的是yrzr/gitlab-ce-arm64v8,这个版本是arm64架构
2.下载镜像
root@kylin:~# docker pull yrzr/gitlab-ce-arm64v8
2.运行gitlab及修改配置
1.运行gitlab
root@kylin:~# docker run -d \
--restart always \ #容器停止后的重启策略: 容器退出时总是重启
--name gitlab \
--privileged \
--memory 4096M \
-p 1022:22 -p 1080:1080 -p 443:443 \ #端口,左边为宿主机,右边为容器
--hostname gitlab.example.com \ #访问域名,可以后续修改
--env GITLAB_OMNIBUS_CONFIG="nginx['redirect_http_to_https'] = true; " \
-v /root/software/gitlab/etc:/etc/gitlab:z \ #数据卷挂载,左边为宿主机,右边为容器
-v /root/software/gitlab/log:/var/log/gitlab:z \
-v /root/software/gitlab/data:/var/opt/gitlab:z \
yrzr/gitlab-ce-arm64v8:latest
2.配置
gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置/etc/gitlab/gitlab.rb
下面的配置文件需要在容器内修改,请勿挂载到宿主机的文件上进行修改,否则可能会出现配置更新不到容器内或者延迟更新到容器内,导致启动成功,却无法访问。
root@kylin:~# docker exec -it gitlab /bin/bash #进容器内部 root@gitlab:/# vi /etc/gitlab/gitlab.rb #修改配置文件#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口,这里的端口号要与启动容器时的端口映射相对应 external_url 'http://192.168.5.52:1080' #ssh主机ip gitlab_rails['gitlab_ssh_host'] = '192.168.5.52' #ssh连接端口 gitlab_rails['gitlab_shell_ssh_port'] = 1022root@gitlab:/# gitlab-ctl reconfigure # 让配置生效 root@gitlab:/# gitlab-ctl restart # 重启gitlab
3.验证测试
root@kylin:~# curl http://localhost:1080
<html><body>You are being <a href="http://localhost:1080/users/sign_in">redirected</a>.</body></htm
4.浏览器测试
浏览访问:http://192.168.5.52:1080

3.修改外部访问端口(docker对gitlab容器的映射)
1.方法1:删除原有容器,重建新容器
docker rm gitlab 或 容器id #删除容器
# 构建新的容器,命令参照上面,注意修改相应端口号
优点:简单快捷,测试环境使用较多
缺点:若为数据库镜像,重建后再重新配置一次比较麻烦
2. 方法2 :修改容器配置文件,重启docker服务
root@kylin:~# docker stop f9c #停止容器
root@kylin:~# pkill -9 docker #停掉docker
root@kylin:~# ps aux | grep docker #确认docker进程是否被关闭
root@kylin:~# cat /var/lib/docker/containers/容器ID/hostconfig.json #参照下图

如上图所示,文件中其中一项是PortBindings:
- 1080/tcp对应的是容器内部的80端口
- HostPort对应的是映射到宿主机的端口8080
- 按照需求修改端口,然后启动docker服务,再重启容器即可
root@kylin:~# dockerd --data-root=/var/lib/docker &
root@kylin:~# docker restart gitlab
#重启后需要等待几分钟,和硬件配置有直接关系
- 优点:这个方法的优点是没有副作用,操作简单
- 缺点:是需要重启整个docker服务,如果在同一个宿主机上运行着多个容器服务,会影响其他容器服务
注意:一定要先停掉docker修改配置才能成功。
3. 方法3: docker commit新构镜像
把一个容器的文件改动和配置信息commit到一个新的镜像;把容器所有的文件改动和配置信息导入成一个新的docker镜像,然后用这个新的镜像重起一个容器,这对之前的容器不会有任何影响。
- 停止docker 容器
docker stop gitlab
- commit该docker容器
docker commit gitlab new_gitlab:tag
- 重新启动一个容器
docker run ...
优点:不会影响宿主机上的其他容器
缺点:管理起来显得比较乱,不如方法2直观
4.密码
1.默认密码
root@kylin:~# docker exec -it gitlab bash
root@gitlab:/# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 密码

2.修改root密码
root@gitlab:/# gitlab-rails console #容器内部打开控制台
--------------------------------------------------------------------------------Ruby: ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [aarch64-linux]GitLab: 15.10.1 (a2b7634113a) FOSSGitLab Shell: 14.18.0PostgreSQL: 13.8
------------------------------------------------------------[ booted in 55.94s ]
Loading production environment (Rails 6.1.7.2)
irb(main):001:0> user = User.find(1) #查看id为1的账号
=> #<User id:1 @root>
irb(main):002:0> user.password = '花非人陌' #修改密码
=> "Caixm123xuan"
irb(main):003:0> user.password_confirmation = '' #确认密码
=> "Caixm123xuan"
irb(main):004:0> user.save! #保存配置
=> true
irb(main):005:0> exit #退出控制台相关文章:
飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
目录 一、安装及配置docker 1、卸载docker相关包及删除相关配置文件 2、安装二进制docker 1.下载软件包 2.解压 3.修改镜像加速地址 4.修改profile文件 5.启动docker 6.docker常用命令 二、安装并启动gitlab镜像 1.安装gitlab镜像 1.查询满足使用需求的gitlab版本 2…...
C++ 的类型转换
目录 1. C语言中的类型转换 2. C强制类型转换 2.1static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 3. RTTI(了解) 1. C语言中的类型转换 在 C 语言中,如果 赋值运算符左右两侧类型不同,或者形参与实参类型不…...
【Windows】普通控制台EXE程序转为windows服务方式运行的详细步骤
背景 NSSM(Non-Sucking Service Manager)是一个免费的第三方Windows服务管理器,可以将任何可执行文件转换为Windows服务。官网下载地址为:https://nssm.cc/download 以下是NSSM配置Windows服务的详细步骤和注意事项: …...
NSSCTF [suctf 2019]hardcpp WP 控制流混淆
下载文件,64位主函数非常多循环 去控制流混淆,脚本下载deflat 用法 python 脚本名 文件名 起始地址例如主函数地址是0x4007E0 python deflat.py hardCpp 0x4007E0然后就生成了去混淆的文件 主函数非常大,开始分析逻辑 puts("func(?…...
计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究
文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望导文 基于神经网络的网络安全态势感知技术研究 文章重点 摘要 随着互联网的快速发展,网络攻击的频率和复杂度也在逐年增加。为了更好地保护信息系统…...
Flask框架之Request、Response、Cookies、Session等对象的使用
Request、Response、Cookies、Session等对象的使用 Request对象基本使用参数的获取转换器内置转换器自定义转换器 Response对象基本使用返回模板重定向返回JSON Cookies对象设置cookie获取cookie删除cookie Session会话对象设置SECRET_KEY设置会话获取会话释放会话 Request对象…...
信号与槽机制一
一、信号与槽 1、什么是信号与槽? 信号和槽是用于对象之间的通信,它是Qt的核心机制,在Qt编程中有着广泛的应用。如果想学好Qt,一定要充分掌握信号的槽的概念与使用。 2、信号和槽的代码实例 在Qt中,发送对象、发送的信…...
nodejs 复制文件到指定目录
var fs require(fs), path require(path), exec require(child_process).exec, sourcePath, targetPath; //获取命令行中的路径 process.argv.forEach(function (val, index, array) { if (index 2) { sourcePath val; } if (index 3) { targetPath val; } }); // 定义…...
第八章 使用Apache服务部署静态网站
文章目录 第八章 使用Apache服务部署静态网站一、网站服务程序1、网站服务介绍2、Apache程序介绍 二、配置服务文件参数1、Linux系统中的配置文件2、配置httpd服务程序时最常用的参数以及用途描述 三、SELinux安全子系统1、SELinux介绍2、SELinux服务配置模式3、Semanage命令4、…...
Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用
文章: Three——一、初识Three以及基础的前端场景搭建(结尾含源码)Three——二、加强对三维空间的认识Three——三、动画执行、画布大小、渲染帧率和相机适配体验Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用Three——五、点线模型对象、三角形概念…...
盲目自学网络安全只会成为脚本小子?
前言:我们来看看怎么学才不会成为脚本小子 目录: 一,怎么入门? 1、Web 安全相关概念(2 周)2、熟悉渗透相关工具(3 周)3、渗透实战操作(5 周)4、关注安全圈动…...
文从字顺|程序员须知,如何编写高质量代码
高质量代码是软件开发中至关重要的一部分。高质量的代码不仅可以提高软件的可维护性和可复用性,还可以增强软件的安全性和稳定性。同时,可以降低软件维护成本,提升开发效率,为用户提供更好的使用体验。 写出高质量代码是每个程序…...
PCIe物理层弹性缓存机制(详细)解析-PCIe专题知识(四)
目录 前言一、简介二、详细解析2.1 实例解析2.2 具体实现过程 三、总结四、其他相关链接1、PCI总线及发展历程总结2、PCIe物理层总结-PCIE专题知识(一)3、PCIe数据链路层图文总结-PCIe专题知识(二)4、PCIe物理层链路训练和初始化总…...
分片上传和断点续传的区别?实现思路是什么?
相同: 分片上传和断点续传都是网络传输中常用的重要技术 不同: 分片上传:将一个大文件切分为多个小文件进行上传。这种方式能够加快上传速度,降低服务器压力,特别适用于大型文件的上传。例如,在云存储系统…...
微前端 qiankun@2.10.5 源码分析(二)
微前端 qiankun2.10.5 源码分析(二) 我们继续上一节的内容。 loadApp 方法 找到 src/loader.ts 文件的第 244 行: export async function loadApp<T extends ObjectType>(app: LoadableApp<T>,configuration: FrameworkConfi…...
08异步请求:何种场景下应该使用异步请求?
异步在计算机科学中早就是一个比较常用的词汇,从操作系统的特性( 并发、共享、虚拟、异步)开始,异步就在处理并发操作中起到很大的作用,不仅如此,在软件层面,异步同样也是解决并发请求的一个关键过程,它可以将瞬时激增的请求进行更加灵活的处理,通过异步请求,客户端可…...
【深度学习 | Transformer】Transformers 教程:pipeline一键预测
文章目录 一、前言二、Computer vision2.1 Image classification2.2 Object detection2.3 Image segmentation2.4 Depth estimation 三、NLP3.1 Text classification3.2 Token classification3.3 Question answering3.4 Summarization3.5 Translation3.6 Language modeling3.6.…...
HTMLCSS
1、HTML 1.1 介绍 HTML 是一门语言,所有的网页都是用HTML 这门语言编写出来的,也就是HTML是用来写网页的,像京东,12306等网站有很多网页。 这些都是网页展示出来的效果。而HTML也有专业的解释 HTML(HyperText Markup Language)…...
【安装Nginx】
Linux上安装Nginx 文章目录 Linux上安装NginxUbuntuCentOS查看已安装的软件 Ubuntu 在 Ubuntu 上安装 Nginx 非常简单。只需按照以下步骤操作: 打开终端,更新软件包索引: sudo apt update安装 Nginx: sudo apt install nginx安…...
VSCode作业1:猜数字游戏和简单计数器(包含完整代码)
目录 猜数字游戏 一、使用‘random’函数获取随机数 二、 分情况讨论输入值大小情况 三、HTML代码 四、CSS样式及运行效果 简单计数器(计时器) 一、使用‘setInterval’函数实现计数效果 二、使用’clearInterval‘函数实现暂停计数和重新计数效果 …...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
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 arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
