Docker快速部署gitlab+gitlab-runner实例

 更新时间:2024年06月04日 11:19:55   作者:新时代的老古董  
这篇文章主要介绍了Docker快速部署gitlab+gitlab-runner实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、概述

为了方便做一些的测试,我一般不会选择直接在服务器上部署gitlab,那太浪费资源了。

一般直接用docker起gitlab,这样即快速便捷,又节约资源。

二、安装docker

安装docker 的方法很多,这里我就不过多阐述了,我选择了最懒的办法,直接通过yum安装。

# 安装依赖环境
[root@docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

# 配置阿里云YUM源
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker
[root@docker ~]# yum -y install docker-ce

# 设置开机自启动
[root@docker ~]# systemctl enable docker

# 配置阿里云docker镜像源
[root@docker ~]# mkdir -p /etc/docker
[root@docker ~]# tee /etc/docker/daemon.json << EOF
> {
> "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
> }
> EOF
[root@docker ~]# cat /etc/docker/daemon.json

# 启动docker
[root@docker ~]# systemctl start docker

# 查看docker是否安装完成
[root@docker ~]# docker -v

Docker version 20.10.17, build 100c701

三、启动gitlab

拉取gitlab镜像,并把gitlab的80,443,22端口和关键的目录映射到宿主机上。注意可以

-d 选项指让容器在后台运行。-p 端口映射,主机端口:容器端口,分别把容器内443、80、22端口映射到宿主机的443、8082、222端口。(直接复制CSDN上的命令,可能会报错,不是命令有问题,而是CSDN上块的编码格式有问题。手敲就好了)

[root@docker ~]# docker pull gitlab/gitlab-ce
[root@docker ~]# docker run -d -p 443:443 -p 8082:80 -p 222:22 --name gitlab -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

四、修改配置gitlab

1. 获取gitlab初始密码,因为我在启动容器的时候映射了配置文件目录,就直接在宿主机上搜密码了。

gitlab 的账号是 root,通过初始密码登入gitlab。

[root@docker ~]# grep Password /data/gitlab/config/initial_root_password
# 2. Password hasn't been changed manually, either via UI or via command line.
Password: jWx7wxw1uVYzPV52WU3F+sUMUT5RLBvBAhupBGcXkHk=

2. 登录后先修改root密码, Menu >> Admin >> Users >> 编辑,有个password,输入新的密码,然后Save changes 。保存完成后,用新密码登录即可。

3. 这里还没结束,你创建一个new project,你会发现,clone地址url 是容器的ID号,但我们改成宿主机IP地址。不然就无法拉取项目代码。进入宿主机的 /data/gitlab/config/ 目录(config目录映射的是哪个目录就进哪个目录)。修改gitlab.rb 文件的内容。

[root@docker ~]# cd /data/gitlab/config/
[root@docker config]# ls
gitlab.rb ssh_host_ecdsa_key ssh_host_ed25519_key.pub trusted-certs
gitlab-secrets.json ssh_host_ecdsa_key.pub ssh_host_rsa_key
initial_root_password ssh_host_ed25519_key ssh_host_rsa_key.pub


[root@docker config]# vim gitlab.rb

external_url 'http://192.168.194.23:8082'

# 配置外部机器访问的ip地址或域名,注意这里的端口号是容器内部80端口映射到主机上的端口号,如果不修改此行,则clone 的http地址会失败。而且gitrunner连接时也会失败。



gitlab_rails['gitlab_ssh_host'] = '192.168.194.23' # 配置ssh 主机IP地址
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 配置ssh端口

nginx['listen_port'] = 80 # 配置nginx 端口号,如果不配,会发现gitlab无法访问。因为它会默认使用上面 external_url 配置的端口号作为gitlab的nginx监听端口。



[root@docker config]# docker restart 容器ID # 重启容器

4. 再次点开项目,查看clone地址,可以看到之前的容器ID已经变成宿主机的IP地址了。而且ssh 和http端口号也都变成了宿主机的端口号了。

五、docker 部署 gitlab-runner

1. GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

2. 用 docker 部署 gitlab-runner。官方文档上有两种启动方式,分别是使用系统本地目录挂载启动和docker 卷启动,我这里用系统本地目录挂载。

3. 在启动runner 时可以加“--ip” 选项指定容器IP。我这里没加。

详见官网:Run GitLab Runner in a container | GitLab

[root@docker ~]# docker pull gitlab/gitlab-runner:latest

[root@docker ~]# docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

六、注册runner

1. 查看runner 的token。

2. 注册runner,进入容器注册,也可以不进入容器注册。我选择的是进入容器注册。

root@8db9c442c584:/# gitlab-runner register

Enter the GitLab instance URL (for example, https://gitlab.com/): # 输入gitlab url

http://172.17.0.3/ci # 注意,这里的url写的是gitlab容器的IP地址,不是服务器IP
Enter the registration token: # 输入runner 的 token
NNv2TXxEqDswX5Px4jbu
Enter a description for the runner: # 输入runner名(随意吧)
[8db9c442c584]: test
Enter tags for the runner (comma-separated): # 输入runner标签
test
Registering runner... succeeded runner=NNv2TXxE
Enter an executor: custom, docker, docker-ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes, parallels, shell, ssh: # 输入执行模式
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! # 完成设置

3. 注册完成后,我们回gitlab 页面,项目的CI/CD中,查看Runner,可以看到runner已关联到此项目。或者通过管理员账号看。到此gitrunner注册成功。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker 安装部署 Prometheus 与grafana的详细过程

    docker 安装部署 Prometheus 与grafana的详细过程

    本文给大家详细介绍了如何在CentOS 7上使用Docker和Docker Compose安装和配置Prometheus和Grafana,并展示了如何进行基本的监控配置和数据可视化,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • Docker 磁盘占用分析和清理方法示例小结

    Docker 磁盘占用分析和清理方法示例小结

    本文介绍Docker磁盘占用分析与清理方法,涵盖镜像、容器、卷及构建缓存的资源排查,提供清理未使用资源的命令及选项,如docker system prune和docker image prune,并解释悬空镜像的产生原因及处理技巧,感兴趣的朋友一起看看吧
    2025-07-07
  • 在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    这篇文章主要介绍了在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • docker搭建samba服务smb网络磁盘共享方式

    docker搭建samba服务smb网络磁盘共享方式

    这篇文章主要介绍了docker搭建samba服务smb网络磁盘共享方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • docker日志出现无法检索问题的解决

    docker日志出现无法检索问题的解决

    这篇文章主要介绍了docker日志出现无法检索问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 通过Docker部署Redis 6.x集群的方法

    通过Docker部署Redis 6.x集群的方法

    这篇文章主要介绍了通过Docker部署Redis 6.x集群的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Docker-compose搭建Redis集群(Sentinel)的实现

    Docker-compose搭建Redis集群(Sentinel)的实现

    本文主要介绍了Docker-compose搭建Redis集群(Sentinel)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • docker实现MySQL的主从复制

    docker实现MySQL的主从复制

    在学习项目的时候实现读写分离用到了主从复制,但是一般要实现的话需要虚拟机或服务器非常麻烦,但是docker可以完美解决这一问题,本文主要介绍了docker实现MySQL的主从复制,感兴趣的可以了解一下
    2024-01-01
  • Docker 本地部署 CSR 前端项目完整指南

    Docker 本地部署 CSR 前端项目完整指南

    本文详细介绍了使用Docker部署Vue3+Vite前端项目的完整流程,通过这套方案,开发者可以轻松实现前端项目的容器化部署,确保开发、测试和生产环境的一致性,感兴趣的可以了解一下
    2026-01-01
  • Docker如何安装Oracle 19c

    Docker如何安装Oracle 19c

    这篇文章主要介绍了Docker如何安装Oracle 19c问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论