1.前言

配置查询:
安装一个screenfetch 工具(忽略)

# 下载 screenfetch 脚本
sudo wget -O /usr/bin/screenfetch https://raw.githubusercontent.com/KittyKatt/screenFetch/master/screenfetch-dev

# 赋予执行权限
sudo chmod +x /usr/bin/screenfetch

# 验证安装
screenfetch

在这里插入图片描述

2.安装Docker拉取镜像

步骤 1:卸载旧版本(如果已安装)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果您是第一次安装,此步骤可跳过。系统会提示“未找到匹配的包”,这是正常的。

步骤 2:安装必要的工具和驱动

Docker 需要 yum-utils 工具来管理仓库,并且推荐使用 overlay2 存储驱动。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

步骤 3:添加 Docker 官方 Yum 仓库

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

步骤 4:安装 Docker Engine

sudo yum install -y docker-ce docker-ce-cli containerd.io

docker-ce: Docker 社区版引擎。
docker-ce-cli: Docker 命令行界面。
containerd.io: 容器运行时。

步骤 5:启动并设置 Docker 开机自启

# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自动启动
sudo systemctl enable docker

# 检查 Docker 服务状态
sudo systemctl status docker

如果看到 active (running),说明 Docker 已成功启动。

步骤 6:验证安装

运行一个简单的 Hello World 容器来验证一切是否正常:

sudo docker run hello-world

如果看到类似下面的输出,恭喜您,Docker 安装成功!

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

步骤 7:配置可用镜像仓库,镜像加速

/etc/docker/daemon.json配置文件

{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://docker.1ms.run"
  ]
}

修改后需要重启 Docker 服务使配置生效:

# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证配置是否生效
docker info | grep "Registry Mirrors"  # 查看镜像加速是否生效

在这里插入图片描述

3.安装gitlab

1.使用以下命令拉取最新的 GitLab 社区版(CE)镜像

docker pull gitlab/gitlab-ce:latest

拉取完成后,查看已下载的镜像:
在这里插入图片描述
​​确保 Docker 服务运行​​:使用以下命令确认 Docker 已启动并设置开机自启。

sudo systemctl start docker
sudo systemctl enable docker

2.创建数据持久化目录​​

为防止容器删除后数据丢失,需要建立目录映射容器内的数据

mkdir -p /root/gitlab/{config,logs,data}

此命令会创建三个目录,分别用于存储 GitLab 的​​配置​​、​​日志​​和​​应用数据
在这里插入图片描述

3.使用docker-compose.yml部署

创建一个docker-compose.yml编写内容:

重新写个了docker-compose.yml文件,成功了,找出原因:
version: '3.8'  # 建议使用 3.8 版本
services:
  web:
    image: 'gitlab/gitlab-ce:latest' # 您已下载的镜像
    container_name: gitlab # 明确指定容器名,便于管理
    restart: always
    hostname: '192.168.26.133' # 强烈建议改为您的虚拟机IP,而非 'gitlab'[3,7](@ref)
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.26.133:8929' # 此处也必须使用IP,与hostname保持一致[3,6,7](@ref)
        gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 明确告知GitLab SSH端口[1,3](@ref)
        nginx['listen_port'] = 80 # 确保Nginx监听80端口[1](@ref)
        nginx['redirect_http_to_https'] = false
        # 性能优化配置(适合有限资源)
        postgresql['shared_buffers'] = "256MB"
        unicorn['worker_processes'] = 2
        sidekiq['concurrency'] = 5
        prometheus_monitoring['enable'] = false
    ports:
      - '8929:80'   # HTTP访问端口
      - '2222:22'   # SSH克隆端口
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
    shm_size: '256m'
    networks:
      - gitlab-net # 建议使用自定义网络

networks:
  gitlab-net:
    driver: bridge

​​创建目录并编写配置文件​​,在您计划运行 GitLab 的目录下,创建 docker-compose.yml文件,并将上面调整后的内容粘贴进去。
确保当前目录下还没有 config, logs, data这些子目录,Docker Compose 会在启动时自动创建它们。
Docker Compose 文件(带详细注释)

# 指定 Docker Compose 配置文件的格式版本。'3.8' 是一个较新且稳定的版本,兼容 Docker Engine 19.03.0+ [3,7](@ref)
version: '3.8'

# 定义本文件要创建和管理的所有服务(容器)[3,7](@ref)
services:
  # 定义一个名为 'web' 的服务,名称可自定义,后续管理命令会用到[3](@ref)
  web:
    # 指定容器使用的镜像。'gitlab/gitlab-ce:latest' 表示使用 GitLab 社区版的最新镜像[3,7](@ref)
    image: 'gitlab/gitlab-ce:latest'
    # 为容器指定一个自定义名称,便于后续使用 docker 命令进行管理(如 docker logs gitlab)[3](@ref)
    container_name: gitlab
    # 设置容器的重启策略。'always' 表示无论容器因何退出,Docker 都会自动重启它[3,7](@ref)
    restart: always
    # 设置容器内部使用的主机名。通常设置为外部可访问的域名或IP地址,这与 GitLab 的配置密切相关[3,5](@ref)
    hostname: '192.168.26.133'
    # 设置容器内的环境变量,这些变量会影响容器的运行行为[3,7](@ref)
    environment:
      # 设置容器的时区为亚洲/上海,使日志和时间记录与本地时间一致[2](@ref)
      TZ: 'Asia/Shanghai'
      # GITLAB_OMNIBUS_CONFIG 是 GitLab 官方镜像的特殊环境变量,用于在启动时内嵌 GitLab 配置[3](@ref)
      GITLAB_OMNIBUS_CONFIG: |
        # 设置 GitLab 的外部访问地址。必须与 hostname 匹配,用于生成仓库克隆链接等[3](@ref)
        external_url 'http://192.168.26.133:8929'
        # 明确设置 GitLab Shell 通过 SSH 克隆仓库时使用的端口,因为宿主机映射了非标准端口(2222)[1,3](@ref)
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
        # 确保 Nginx (GitLab 的内置 Web 服务器) 监听容器内的 80 端口[1](@ref)
        nginx['listen_port'] = 80
        # 禁用 HTTP 到 HTTPS 的重定向。如果未配置 SSL,此项必须为 false[2](@ref)
        nginx['redirect_http_to_https'] = false
        # 以下为 GitLab 性能调优参数,适用于资源有限的环境(如虚拟机)[2](@ref)
        # 设置 PostgreSQL 数据库使用的共享内存大小[2](@ref)
        postgresql['shared_buffers'] = "256MB"
        # 减少 GitLab 主应用服务器(Unicorn)的 worker 进程数,以降低内存消耗[2](@ref)
        unicorn['worker_processes'] = 2
        # 减少 GitLab 后台任务处理器(Sidekiq)的并发线程数,以降低内存消耗[2](@ref)
        sidekiq['concurrency'] = 5
        # 禁用 Prometheus 监控系统及其相关的节点导出器,以减少资源开销[2](@ref)
        prometheus_monitoring['enable'] = false

    # 将容器的端口映射到宿主机,格式为 '宿主机端口:容器端口'[3,7](@ref)
    ports:
      # 将容器的 80 端口 (HTTP) 映射到宿主机的 8929 端口。访问 http://宿主机IP:8929[3](@ref)
      - '8929:80'
      # 将容器的 22 端口 (SSH) 映射到宿主机的 2222 端口。用于 Git 的 SSH 克隆与推送操作[3](@ref)
      - '2222:22'

    # 定义数据卷挂载,将容器内的路径持久化到宿主机,防止数据因容器销毁而丢失[3,7](@ref)
    volumes:
      # 将宿主机当前目录下的 './config' 目录挂载到容器的 '/etc/gitlab',持久化 GitLab 配置文件[3](@ref)
      - './config:/etc/gitlab'
      # 将宿主机当前目录下的 './logs' 目录挂载到容器的 '/var/log/gitlab',持久化 GitLab 日志文件[3](@ref)
      - './logs:/var/log/gitlab'
      # 将宿主机当前目录下的 './data' 目录挂载到容器的 '/var/opt/gitlab',持久化应用数据(仓库、数据库等)[3](@ref)
      - './data:/var/opt/gitlab'

    # 设置容器的共享内存大小(shm_size)。GitLab 需要足够的共享内存才能正常运行,例如用于处理大型仓库[3](@ref)
    shm_size: '256m'

    # 指定该服务连接到一个或多个自定义网络[3,7](@ref)
    networks:
      # 连接到名为 'gitlab-net' 的网络(该网络需在文件下方的 networks 部分定义)[3](@ref)
      - gitlab-net

# 定义所有服务中可能使用的自定义网络[3,7](@ref)
networks:
  # 定义一个名为 'gitlab-net' 的桥接网络[3](@ref)
  gitlab-net:
    # 指定该网络的驱动为 'bridge',这是单机环境下最常用的网络驱动[3,7](@ref)
    driver: bridge

4.启动 GitLab 服务​

# 在包含 docker-compose.yml 文件的目录下执行
sudo docker-compose down
sudo docker-compose up -d

-d参数表示后台运行。首次启动会初始化,可能需要 ​​5-10 分钟​​甚至更久(取决于资源),请耐心等待

检查启动状态​

# 查看容器状态,直到状态变为 "healthy" (或通过日志查看进度)
sudo docker-compose ps
# 实时查看日志(Ctrl+C 退出)
sudo docker-compose logs -f

当您看到类似 gitlab Reconfigured! 的日志时,说明启动完成。

5.访问 GitLab

使用命令,看是否启动成功

 curl -I http://localhost:8929

如图所示即为成功
在这里插入图片描述
外部打开浏览器,访问 http://:8929。启动成功
查看初始密码:

 docker exec -it gitlab cat /etc/gitlab/initial_root_password

在这里插入图片描述
在这里插入图片描述

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐