GitLab在CentOS上的容器化实践
导读:一 环境准备与资源建议 操作系统:CentOS 7/8(64 位) 容器运行时:Docker CE 与(可选)Docker Compose 资源基线:至少 4GB 内存,推荐 8GB+;CPU 4 核+;磁盘按仓库与镜像规模规划 安装 D...
一 环境准备与资源建议
- 操作系统:CentOS 7/8(64 位)
- 容器运行时:Docker CE 与(可选)Docker Compose
- 资源基线:至少 4GB 内存,推荐 8GB+;CPU 4 核+;磁盘按仓库与镜像规模规划
- 安装 Docker(示例):
- sudo yum update -y
- 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 start docker & & sudo systemctl enable docker
- 验证:docker --version 应返回版本号
二 部署 GitLab 与内置 Container Registry
- 目录与权限(持久化):
- mkdir -p /home/middleware/gitlab/{ config,data,logs}
- 方式一 Docker Compose(推荐,内置 Registry)
- 新建 docker-compose.yml: version: ‘3’ services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: unless-stopped hostname: ‘your-gitlab-domain.com’ environment: GITLAB_OMNIBUS_CONFIG: | external_url ‘http://your-gitlab-domain.com’ gitlab_rails[‘gitlab_shell_ssh_port’] = 2222 registry_external_url ‘http://your-gitlab-domain.com:5050’ ports: - ‘80:80’ - ‘443:443’ - ‘2222:22’ - ‘5050:5050’ volumes: - ‘./config:/etc/gitlab’ - ‘./logs:/var/log/gitlab’ - ‘./data:/var/opt/gitlab’
- 启动:docker-compose up -d
- 方式二 Docker Run(快速启动)
- docker run -d
–hostname 192.168.1.1
–publish 443:443 --publish 80:80 --publish 2222:22
–name gitlab
–restart always
–volume /home/middleware/gitlab/config:/etc/gitlab
–volume /home/middleware/gitlab/logs:/var/log/gitlab
–volume /home/middleware/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest
- docker run -d
- 初始化与访问
- 首次访问 http://your-domain-or-ip,设置 root 密码
- 查看初始密码:docker exec -it gitlab grep ‘Password:’ /etc/gitlab/initial_root_password
- 如需使用内置 Container Registry,在 Admin Area > Settings > General 勾选 Enable,并使用端口 5050 访问
三 端口与防火墙配置
- 避免与宿主机 SSH 冲突:将容器 22 映射为 2222:22,并在 GitLab 中设置 SSH 端口为 2222
- 编辑:/home/middleware/gitlab/config/gitlab.rb
- external_url ‘http://your-domain-or-ip’
- gitlab_rails[‘gitlab_shell_ssh_port’] = 2222
- 使配置生效:docker exec -it gitlab gitlab-ctl reconfigure & & docker restart gitlab
- 克隆示例:git clone ssh://git@your-domain-or-ip:2222/namespace/project.git
- 编辑:/home/middleware/gitlab/config/gitlab.rb
- 防火墙放行(firewalld)
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --permanent --add-port=2222/tcp
- sudo firewall-cmd --reload
- 端口规划建议
- HTTP/HTTPS:80/443(如被占用,可改为 8080/8443 并同步 external_url)
- Registry:建议使用 5050 并配置反向代理与证书
四 安全与访问控制
- HTTPS 与证书
- 生产环境优先使用 HTTPS;可用 Let’s Encrypt 或商用证书,通过 Nginx Ingress/反向代理 终止 SSL
- Registry 同样建议启用 HTTPS,避免明文凭据传输
- 认证与权限
- Registry 使用 GitLab 统一身份认证;推送/拉取需有效用户或 Personal Access Token
- 登录示例:docker login your-gitlab-domain.com:5050
- 镜像可信
- 建议启用 Docker Content Trust(DCT) 对镜像进行签名与验证,提升供应链安全
五 备份恢复与升级运维
- 备份
- 容器内创建备份:docker exec -it gitlab gitlab-backup create
- 备份文件位于容器内 /var/opt/gitlab/backups,如挂载数据卷,通常映射在宿主机的 /home/middleware/gitlab/data/backups
- 恢复
- 将备份文件放入目标实例的 /var/opt/gitlab/backups
- 停止相关服务:docker exec -it gitlab gitlab-ctl stop
- 执行恢复:docker exec -it gitlab gitlab-backup restore BACKUP=< 备份文件名>
- 启动:docker exec -it gitlab gitlab-ctl start
- 升级
- 建议先备份;拉取新镜像后使用 docker-compose up -d 或重启容器完成滚动升级;升级后执行 gitlab-ctl reconfigure
- 监控与日志
- 利用 GitLab 自带监控或对接 Prometheus/Grafana;定期巡检容器与宿主机资源、磁盘与日志异常
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在CentOS上的容器化实践
本文地址: https://pptw.com/jishu/778788.html
