首页主机资讯centos gitlab与docker集成方案

centos gitlab与docker集成方案

时间2025-12-06 00:43:03发布访客分类主机资讯浏览1413
导读:CentOS 上 GitLab 与 Docker 集成方案 一 架构与前置条件 架构要点:在同一台 CentOS 7/8 主机上以 Docker 运行 GitLab CE,启用内置 Container Registry,通过 **GitL...

CentOS 上 GitLab 与 Docker 集成方案

一 架构与前置条件

  • 架构要点:在同一台 CentOS 7/8 主机上以 Docker 运行 GitLab CE,启用内置 Container Registry,通过 **GitLab Runner(Docker 执行器)**驱动 CI/CD,镜像推送到 GitLab Registry,生产环境建议全程 HTTPS
  • 资源建议:至少 4GB 内存(推荐 8GB+)、4 核 CPU50GB+ 磁盘(镜像多时按需扩容)。
  • 基础组件:安装 Docker CE 19.03+、可选 Docker Compose v2(便于编排与备份)。

二 安装 Docker 与 Docker Compose

  • 安装 Docker(CentOS 7 示例):
    • 卸载旧版本(如有):sudo yum remove -y docker*
    • 安装依赖:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    • 添加仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装并启动:sudo yum install -y docker-ce docker-ce-cli containerd.io & & sudo systemctl enable --now docker
  • 安装 Docker Compose(推荐 v2,示例为便捷安装方式):
    • 下载与授权:sudo curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose & & sudo chmod +x /usr/local/bin/docker-compose
    • 验证:docker-compose version / docker version。

三 部署 GitLab 与内置 Container Registry

  • 目录与持久化:
    • 建议目录:/data/gitlab/{ config,logs,data} (宿主机)映射到容器内 /etc/gitlab、/var/log/gitlab、/var/opt/gitlab。
  • 使用 Docker Compose 部署(含 Registry 与端口规划):
    • 示例 docker-compose.yml(将域名与端口按实际替换;Registry 端口示例为 5000):
      version: '3.8'
      services:
        gitlab:
          image: gitlab/gitlab-ce:latest
          container_name: gitlab
          restart: unless-stopped
          hostname: 'gitlab.example.com'
          environment:
            GITLAB_OMNIBUS_CONFIG: |
              external_url 'https://gitlab.example.com'
              gitlab_rails['gitlab_shell_ssh_port'] = 2222
              registry_external_url 'https://registry.example.com:5000'
              registry['enable'] = true
              # 如需自签名或已有证书,取消下一行注释并配置证书路径
              # registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/registry.crt"
              # registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/registry.key"
          ports:
            - '80:80'
            - '443:443'
            - '2222:22'
            - '5000:5000'
          volumes:
            - /data/gitlab/config:/etc/gitlab
            - /data/gitlab/logs:/var/log/gitlab
            - /data/gitlab/data:/var/opt/gitlab
      
    • 启动:docker-compose up -d
    • 首次访问:打开 https://gitlab.example.com,设置管理员密码;在 Admin Area > Settings > General 勾选并启用 Container Registry
  • 防火墙放行(如启用 firewalld):
    • sudo firewall-cmd --permanent --add-service=http --add-service=https & & sudo firewall-cmd --reload
    • 如使用 5000 端口,额外放行:sudo firewall-cmd --permanent --add-port=5000/tcp & & sudo firewall-cmd --reload。

四 使用 GitLab Runner 构建并推送镜像

  • 安装 Runner(容器化方式,便于隔离与升级):
    • 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(在项目或实例级 Settings > CI/CD > Runners 获取 Registration tokenGitLab URL):
    • docker exec -it gitlab-runner gitlab-runner register
      –url https://gitlab.example.com
      –token
      –executor docker
      –docker-image “docker:latest”
      –docker-privileged
      –docker-volumes “/var/run/docker.sock:/var/run/docker.sock”
  • 典型 .gitlab-ci.yml(构建并推送到项目级 Registry,镜像名需包含项目路径):
    stages:
      - build
    
    build_push:
      stage: build
      image: docker:latest
      services:
        - docker:dind
      variables:
        IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
      before_script:
        - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
      script:
        - docker build -t $IMAGE .
        - docker push $IMAGE
      only:
        - main
    
  • 登录与推送(本地开发机或 Runner 环境):
    • docker login registry.example.com:5000(用户名/密码或 Personal Access Token
    • docker build -t registry.example.com:5000//: .
    • docker push registry.example.com:5000//:。

五 安全加固与运维要点

  • HTTPS 与证书:
    • 生产环境强制使用 HTTPS;证书可用 Let’s Encrypt 或企业 CA。自签名仅用于测试:
      • 生成证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048
        -keyout /etc/gitlab/ssl/registry.key -out /etc/gitlab/ssl/registry.crt
        -subj “/CN=registry.example.com”
      • 在 GITLAB_OMNIBUS_CONFIG 中配置 registry_nginx 证书路径并重启生效。
  • 访问控制与合规:
    • 利用 GitLab 项目/组权限控制 Registry 推送/拉取;必要时在反向代理或防火墙做 IP 白名单速率限制
    • 启用 Docker Content Trust(DCT) 对镜像进行签名与验证,提升供应链安全。
  • 存储与备份:
    • 测试环境可用本地存储;生产环境建议使用 S3 等对象存储 作为 Registry 后端(配置 registry[‘storage’] 为 s3)。
    • 定期备份挂载卷(/data/gitlab),并在升级前停机备份与演练恢复流程。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos gitlab与docker集成方案
本文地址: https://pptw.com/jishu/765344.html
minio与centos系统资源占用多少 如何解决centos上minio的故障

游客 回复需填写必要信息