手把手教你使用Docker部署Gitlab仓库

简介: 手把手教你使用Docker部署Gitlab仓库

环境介绍:


192.168.2.20


Node2、Gitlab


CentOS 7.5.1804


Docker 19.03.13


2核+CPU,4GB+内存(Gitlab低于4G内存会报502错误)


部署Gitlab仓库:


- 拉取Gitlab镜像

[root@k8s-node2 ~]# docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
35807b77a593: Pull complete
b32ac5d80a55: Pull complete
df336912e872: Pull complete
b793eccd1af3: Pull complete
f74a7e006150: Pull complete
0084a219e293: Pull complete
3af13cab3fdf: Pull complete
59278f51bfcb: Pull complete
Digest: sha256:7241af5bd54251aa412692cff1adf2d8c604425a03adad5300919b06bd4c6585
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
[root@k8s-node2 ~]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED                  SIZE
gitlab/gitlab-ce                                     latest              ca616a263319        Less than a second ago   2.29GB

- 运行Gitlab容器


命令解释:


  • -i  :以交互模式运行容器,通常与 -t 同时使用命令解释


  • -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用


  • -d :后台运行容器,并返回容器ID


  • -p:80:80  将容器内80端口映射至宿主机80端口,这是访问gitlab的端口


  • -p:222:22  将容器内22端口映射至宿主机222端口,这是访问ssh的端口


  • -v :/usr/local/gitlab-test/etc:/etc/gitlab  将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab-test/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样


  • --restart always  :容器自启动


  • --privileged=true  :让容器获取宿主机root权限


  • --name gitlab  :设置容器名称为gitlab


  • gitlab/gitlab-ce  :镜像的名称,这里也可以写镜像ID
[root@k8s-node2 ~]# docker run -itd --name gitlab -p 443:443 -p 80:80 -p 222:22 --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
971e942b7a703fb82bcd308a3ad8c0f70912ea7abb14b46e8c63ca5b82ab6568

docker run -v挂载目录时,若本地没有该目录挂载时会自动创建。

[root@k8s-node2 ~]# ls /home/
gitlab
[root@k8s-node2 ~]# ls /home/gitlab/
config  data  logs
[root@k8s-node2 ~]# docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED              STATUS                                 PORTS                                                           NAMES
971e942b7a70        gitlab/gitlab-ce                                    "/assets/wrapper"        About a minute ago   Up About a minute (health: starting)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:222->22/tcp   gitlab

- 修改gitlab.rb配置文件


注意:


修改gitlab.rb配置文件操作最好是在容器内进行修改(也可以在宿主机映射目录中修改,记得修改完后进入容器验证修改结果),在挂载到宿主机的文件上直接进行修改可能会出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问或其它问题。

[root@k8s-node2 ~]# vim /home/gitlab/config/gitlab.rb    //gitlab.rb文件内容默认全部注释
  ...
  ...
  32 # external_url 'GENERATED_EXTERNAL_URL'
  33 external_url 'http://192.168.1.20'     //配置http协议所使用的gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
  34 gitlab_rails['gitlab_ssh_host'] = '192.168.1.20'  //配置ssh协议所使用的访问地址和端口
  35 gitlab_rails['gitlab_shell_ssh_port'] = 222  //此端口是docker run时22端口映射的222端口
  36 ## Roles for multi-instance GitLab

11.png

- 重启gitlab容器

[root@k8s-node2 ~]# docker restart gitlab
gitlab

访问报错:

12.png

注意:出现502报错,请第一时间检查内存大小,内存不足会提示502报错。(服务器内存至少4G,不够会出现502错误。)


原始内存大小:

[root@k8s-ndoe2 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        342M        482M         14M        1.1G        1.3G
Swap:            0B          0B          0B

升级后内存大小:

[root@k8s-node2 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        2.9G        157M         25M        821M        613M
Swap:            0B          0B          0B

访问:

13.png

 可以看到在升级完服务器内存大小后,就可以正常登录Gitlab了。


登录Gitlab仓库:


Gitlab默认的管理员临时密码在gitlab容器中/etc/gitlab/initial_root_password文件中,如果该路径下没有这个文件,我们就无法正常登录到gitlab中去,可以试试下面两种方法。


1.宿主机中搜索initial_root_password文件

[root@k8s-node2 ~]# find / -name initial_root_password
/mnt/data/volumes/e7d5b220d1dc98ea2229882865f58e643fef42d4f1c16a3a54458abd017b7c77/_data/initial_root_password
[root@k8s-node2 ~]# cat /mnt/data/volumes/e7d5b220d1dc98ea2229882865f58e643fef42d4f1c16a3a54458abd017b7c77/_data/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: LkhENj02qgKkT7DZplqE35TfdPThK3wuSCgHw0H+BOI=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

 可以看到上面搜索到的initial_root_password文件中显示了gitlab的默认密码。


2.重置gitlab管理员账户密码


5分钟带你重置Gitlab管理员账户密码:https://blog.csdn.net/qq_44895681/article/details/120530904?spm=1001.2014.3001.5501

14.png

 可以看到重置gitlab管理员账号密码后使用新的账户密码成功登录进gitlab中。


配置Gitlab界面语言为中文

15.png16.png17.png18.png

18.png19.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
12
分享
相关文章
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
docker私有仓库harbor安装
通过以上步骤,您可以成功在企业内部安装和配置Harbor私有仓库,方便地管理和分发Docker镜像。Harbor不仅提供了基础的镜像管理功能,还增强了安全性、身份管理和审计功能,使其成为企业级容器镜像管理的理想选择。
70 22
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
55 23
docker部署apollo
docker部署apollo步骤
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
47 22
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 25
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
51 2

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等