centos gitlab与docker集成方案
导读: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 核 CPU、50GB+ 磁盘(镜像多时按需扩容)。
- 基础组件:安装 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。
- 示例 docker-compose.yml(将域名与端口按实际替换;Registry 端口示例为 5000):
- 防火墙放行(如启用 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
- docker run -d --name gitlab-runner --restart always
- 注册 Runner(在项目或实例级 Settings >
CI/CD >
Runners 获取 Registration token 与 GitLab 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”
- docker exec -it gitlab-runner gitlab-runner register
- 典型 .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 证书路径并重启生效。
- 生成证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048
- 生产环境强制使用 HTTPS;证书可用 Let’s Encrypt 或企业 CA。自签名仅用于测试:
- 访问控制与合规:
- 利用 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
