01 docker安装gitlab

docker安装gitlab

转载来源:(156条消息) Docker 搭建 Gitlab 服务器 (完整详细版)_docker gitlab_Touch&的博客-CSDN博客

gitlab 镜像

docker search gitlab
docker pull gitlab/gitlab-ce:latest

启动gitlab容器


# 启动容器
docker run \
 -itd  \
 -p 9980:80 \
 -p 9922:22 \
 -v /home/gitlab/etc:/etc/gitlab  \
 -v /home/gitlab/log:/var/log/gitlab \
 -v /home/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 --shm-size 256
 gitlab/gitlab-ce

实际上,这里需要在中间加上参数 共享内存大小配置--shm-size="1g", 默认的配置64m不够,metric监控数据可能溢出,日志暴涨。

命令 描述
-i 以交互模式运行容器,通常与 -t 同时使用命令解释
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /home/gitlab/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab-test/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
–restart always 容器自启动
–privileged=true 让容器获取宿主机root权限
–name gitlab 设置容器名称为gitlab
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID

接下来的配置请在容器内进行修改,不要在挂载到宿主机的文件上进行修改。否则可能出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问

修改配置

#进容器内部
docker exec -it gitlab /bin/bash
 
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
 
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.124.194'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
 
# 让配置生效
gitlab-ctl reconfigure

这里默认配置gitlab访问端口80,ssh clone 端口 9922。

但是注意,创建容器的时候,我们将容器80端口映射到了主机9980端口,容器22端口映射到了主机9922端口。

gitlab-ctl reconfigure之后,/etc/gitlab/gitlab.rb文件的配置会映射到gitlab.yml这个文件,由于咱们在docker中运行,在gitlab上生成的http地址应该是http://192.168.124.194:9980,所以,要修改下面文件:


# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 
  gitlab:
    host: 192.168.124.194
    port: 9980 # 这里改为9980
    https: false

浏览器访问

路径访问:http://192.168.124.194:9980/

机器配置要大于4g,否则很容易启动不了,报502

第一次访问,会让修改root密码 修改后以root用户登录即可

实际上,我安装的版本,不是这样的过程,需要进入容器,找到root的初始密码。

参考:(156条消息) gitlab获取默认用户密码,修改默认密码_gitlab默认用户名密码_votaries的博客-CSDN博客

默认用户root

获取初始密码

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Gitlab操作

创建分组,创建项目

Docker搭建Gitlab服务器完成!!!

问题处理:puma进程太多

Puma 是一个用于 Ruby 应用程序的快速、多线程和高度并发的 HTTP 1.1 服务器。它运行提供极狐GitLab 面向用户的功能的核心 Rails 应用程序。

运行gitlab之后,其内运行的puma进程太多(top查看,好多个puma)

参考:https://docs.gitlab.cn/jh/administration/operations/puma.html

参考: https://blog.csdn.net/m0_46542378/article/details/125344764

我是进入docker, 进入gitlab.rb,

docker exec -it gitlab /bin/bash
vi /etc/gitlab/gitlab.rb 

搜索puma,如下配置取消注释。

puma['enable'] = true                                                                                  
puma['ha'] = false                                                           
puma['worker_timeout'] = 60                                                  
puma['worker_processes'] = 2                                 
puma['min_threads'] = 4                                                  
puma['max_threads'] = 4      

然后重新配置,重新启动docker

gitlab-ctl reconfigure
exit
docker stop gitlab
docker start gitlab

问题处理:运行一段时间后gitlab卡死

gitlab容器运行一段时间后卡死。请求web地址显示500或502.

docker log gitlab
# 发现有超多日志,一直没有达到末尾
# 很多重复日志,类似:writing value to /dev/shm/gitlab/puma/gauge_all_puma_master-0.db failed with unmapped file"

df -hT
# 发现磁盘占用异常,已经快满了

du -h --max-depth=1 /
# 一步步排查下去,发现是gitlab容器的日志卷很大
# 

# 进入容器中,进一步查找大日志文件位置
docker exec -it docker /bin/bash

google了一下,“writing value to /dev/shm/gitlab/xxxxxxx failed with unmapped file” 这样的异常,基本是由于docker容器默认分配的64m共享内存shm偏小,gitlab中开启了监控,metrics数据过多,继而日志中不断报错,直至硬盘写满,造成服务异常,最终前端返回500或502状态。

参考:https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5476 参考:https://docs.gitlab.com/ee/install/docker.html#devshm-mount-not-having-enough-space-in-docker-container 参考:https://blog.csdn.net/qq_33420835/article/details/109013202 参考:https://blog.csdn.net/wd18508423052/article/details/116306096

先进入容器,truncate日志文件,释放一部分硬盘空间。

docker exec -it gitlab /bin/bash
cd xxx
truncate -s 0 ./xxx.log

解决docker容器默认分配的64m共享内存shm偏小:

主要有两个方法,方法一删除实例重建。 这里采用方法二: (1) 先停止所有容器,docker stop container_ID

  1. 停止docker服务。systemctl stop docker

  2. cd /var/lib/containers/要修改的容器id,这个目录是放容器的,有可能因为改了路径有变化。

  3. vim hostconfig.json,找到ShmSize

保存后,重启docker服务,重启gitlab实例。日志增长速度,恢复正常,不再产生前述异常日志。

问题:待解决:git clone http端口不对

新建项目,clone按钮,显示的http clone 地址还是显示的容器内默认的80端口,不是映射出来的9980端口。(git clone ssh地址倒是正确的)。

说明/etc/gitlab/gitlab.rb中

external_url字段中,需要加上端口号。比如改成9980. 建立容器时映射改为 -v 9980:9980.

这就需要重新建立容器。还有一种方法,是为容器动态添加端口映射。(docker在网络方面的配置,linux系统中还是用的iptables或者firewalld,所以需要改对应容器的配置文件)

参考:https://juejin.cn/post/6844903849451323399


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注