当前位置:首页>Linux>记录,基于Rocky Linux 10 操作系统使用Docker部署 gitlab-ce

记录,基于Rocky Linux 10 操作系统使用Docker部署 gitlab-ce

  • 2026-09-06 09:13:55
记录,基于Rocky Linux 10 操作系统使用Docker部署 gitlab-ce
记录,基于Rocky Linux 10 部署 gitlab-ce,文章一共分为三步:安装docker、安装gitlab、后续升级操作。

第一步:安装Docker

添加阿里云docker-ce仓库

dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

列出当前系统中所有可安装的docker-ce版本,并按照版本号从高到低进行排序,同时显示重复的版本。

dnf list docker-ce --showduplicates | sort -r

安装最新版本 docker-ce

dnf install -y docker-ce

也可以指定版本安装,例如:

dnf install -y docker-ce-3:29.2.1-1.el10

创建目录,存放 docker 的配置文件

mkdir -p /etc/docker
1. Cgroup用于限制进程的资源使用量,如CPU、内存资源2. 设置 Docker 使用 systemd 作为 Cgroup 驱动;3. registry-mirrors 配置:docker 镜像加速器的地址列表。

创建并写入daemon.json文件

vim /etc/docker/daemon.json
{  "exec-opts": ["native.cgroupdriver=systemd"],  "registry-mirrors": [    "https://docker.m.daocloud.io"  ]}

设置 docker 开机自启

systemctl enable docker

启动 docker

systemctl start docker

查看 docker 状态

systemctl status docker

第二步:安装 gitlab 社区版

下载 gitlab 社区版

docker pull gitlab/gitlab-ce:latest

安装 gitlab

方式 1: 使用 Docker 直接运行 GitLab CE

# hostname 替换为虚拟机 ipdocker run -d \  --name gitlab \  --hostname 192.168.31.116 \  --restart unless-stopped \  -e GITLAB_OMNIBUS_CONFIG="    external_url 'http://192.168.31.116';    gitlab_rails['gitlab_shell_ssh_port'] = 2222;  " \  -p 80:80 \  -p 443:443 \  -p 2222:22 \  -v /home/docker/gitlab-ce/data/config:/etc/gitlab \  -v /home/docker/gitlab-ce/data/logs:/var/log/gitlab \  -v /home/docker/gitlab-ce/data/data:/var/opt/gitlab \  gitlab/gitlab-ce:latest

建议使用脚本文件,方便后续便捷操作

mkdir -p /home/docker/gitlab-ce
vim start.sh
#!/bin/bash# GitLab CE Docker 启动脚本# 作者:自定义# 功能:一键启动 GitLab CE 容器,包含前置检查和目录初始化# 定义配置参数(可根据需要修改)GITLAB_HOST="192.168.31.116"  # GitLab 访问IP/域名CONTAINER_NAME="gitlab"       # 容器名称GITLAB_PORT_HTTP=80           # HTTP 端口映射GITLAB_PORT_HTTPS=443         # HTTPS 端口映射GITLAB_PORT_SSH=2222          # SSH 端口映射DATA_DIR="/home/docker/gitlab-ce/data"        # 数据持久化目录# 颜色输出函数(可选,提升脚本可读性)red_echo() { echo -e "\033[31m$1\033[0m"; }green_echo() { echo -e "\033[32m$1\033[0m"; }yellow_echo() { echo -e "\033[33m$1\033[0m"; }# 1. 检查是否为 root 用户(避免权限不足)if [ $UID -ne 0 ]; then    red_echo "错误:请使用 root 用户或 sudo 运行此脚本!"    exit 1fi# 2. 检查 Docker 是否已安装并运行if ! command -v docker &> /dev/null; then    red_echo "错误:未安装 Docker,请先安装 Docker 后再运行!"    exit 1fiif ! systemctl is-active --quiet docker; then    yellow_echo "提示:Docker 服务未运行,正在启动..."    systemctl start docker    systemctl enable docker    if [ $? -ne 0 ]; then        red_echo "错误:Docker 启动失败!"        exit 1    fifi# 3. 创建数据持久化目录yellow_echo "提示:创建 GitLab 数据目录..."mkdir -p ${DATA_DIR}/{config,logs,data}chmod -R 755 ${DATA_DIR}if [ $? -eq 0 ]; then    green_echo "成功:数据目录创建完成 -> ${DATA_DIR}"else    red_echo "错误:数据目录创建失败!"    exit 1fi# 4. 检查并停止同名容器(避免冲突)if docker ps -a --format "{{.Names}}" | grep -w "${CONTAINER_NAME}" &> /dev/null; then    yellow_echo "提示:发现同名容器 ${CONTAINER_NAME},正在停止并删除..."    docker stop ${CONTAINER_NAME} &> /dev/null    docker rm ${CONTAINER_NAME} &> /dev/null    if [ $? -eq 0 ]; then        green_echo "成功:旧容器已删除"    else        red_echo "错误:旧容器删除失败!"        exit 1    fifi# 5. 启动 GitLab 容器yellow_echo "提示:开始启动 GitLab CE 容器..."docker run -d \  --name ${CONTAINER_NAME} \  --hostname ${GITLAB_HOST} \  --restart unless-stopped \  -e GITLAB_OMNIBUS_CONFIG="    external_url 'http://${GITLAB_HOST}';    gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_PORT_SSH};  " \  -p ${GITLAB_PORT_HTTP}:80 \  -p ${GITLAB_PORT_HTTPS}:443 \  -p ${GITLAB_PORT_SSH}:22 \  -v ${DATA_DIR}/config:/etc/gitlab \  -v ${DATA_DIR}/logs:/var/log/gitlab \  -v ${DATA_DIR}/data:/var/opt/gitlab \  gitlab/gitlab-ce:latest# 6. 检查启动结果if [ $? -eq 0 ]; then    green_echo "============================================="    green_echo "成功:GitLab 容器启动完成!"    green_echo "访问地址:http://${GITLAB_HOST}"    green_echo "SSH 端口:${GITLAB_PORT_SSH}"    green_echo "初始密码查看命令:docker exec -it ${CONTAINER_NAME} cat /etc/gitlab/initial_root_password"    green_echo "容器日志查看:docker logs -f ${CONTAINER_NAME}"    green_echo "============================================="else    red_echo "错误:GitLab 容器启动失败!"    exit 1fiexit 0

给start.sh文件赋予权限

chmod -R 777 start.sh

执行脚本启动gitlab

./start.sh

方式 2:使用 Docker Compose 安装

/home/docker/gitlab-ce 目录下创建 gitlab_deploy.yaml 文件,内容如下:

version: '3.6'services:  gitlab:    image: 'gitlab/gitlab-ce:latest'    container_name: 'gitlab'    restart: unless-stopped    hostname: '192.168.31.116' # hostname 替换为虚拟机 ip    environment:      GITLAB_OMNIBUS_CONFIG: |        external_url 'http://192.168.31.116' # 替换为虚拟机 ip        gitlab_rails['gitlab_shell_ssh_port'] = 2222    ports:      - '80:80'      - '443:443'      - '2222:22'    volumes:      - '/home/docker/gitlab-ce/data/config:/etc/gitlab'      - '/home/docker/gitlab-ce/data/logs:/var/log/gitlab'      - '/home/docker/gitlab-ce/data/data:/var/opt/gitlab'
# 启动 gitlab 服务docker compose -f gitlab_deploy.yaml up -d# 等待几分钟让 gitLab 完全启动(首次启动可能需要较长时间)# 可以通过 docker ps 查看 gitlab 是否完全启动,如下所示,STATUS 为 healthy 后说明成功启动,如果是 starting 说明还在启动中[root@gitlab ~]# docker psCONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS                   PORTS                                                                                                                   NAMESb4364289a9c2   gitlab/gitlab-ce:latest   "/assets/init-contai…"   4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:2222->22/tcp, [::]:2222->22/tcp   gitlab# 访问 http://192.168.31.116# 用户名 root # 用户密码在 /home/docker/gitlab-ce/data/config/initial_root_password 文件中# 使用命令 cat /home/docker/gitlab-ce/data/config/initial_root_password 查看登录密码# 里面的Password: 后面的值就是 root 默认的登录密码# 登录 gitlab 后,先重置密码

后续升级 GitLab 到最新版

# 1. 拉取最新镜像docker pull gitlab/gitlab-ce:latest# 2. 停止并删除旧容器(数据在宿主机 /home/docker/gitlab-ce/data,不会丢)docker stop gitlabdocker rm gitlab# 3. 用你之前的 start.sh 重新启动(会自动用新镜像)./start.sh

最新文章

随机文章