从零搭建GitLab私有镜像仓库:HTTP协议下的Docker Compose实战指南
在CI/CD流水线中,镜像管理一直是开发者面临的痛点。当团队规模扩大,公共镜像仓库的限速和隐私问题逐渐凸显,而商业解决方案又往往价格不菲。本文将带你用最简配置,在HTTP协议下搭建一个与GitLab深度集成的私有Container Registry,无需购买SSL证书,特别适合中小团队快速搭建内部镜像托管服务。
1. 环境准备与架构设计
私有镜像仓库的核心价值在于可控性和集成度。与直接使用Docker Hub或第三方服务不同,GitLab内置的Container Registry能够无缝对接CI/CD流程,实现从代码提交到镜像部署的全链路自动化。
基础组件需求:
- Docker Engine 20.10+
- Docker Compose 2.0+
- 至少4GB可用内存
- 50GB以上存储空间(视镜像数量而定)
典型的开发场景中,我们会遇到这些具体需求:
- 内网环境下快速部署
- 与现有GitLab用户体系集成
- 避免复杂的证书管理
- CI/CD流水线自动推送镜像
bash复制# 验证Docker环境
docker --version
docker-compose --version
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键配置解析
与传统HTTPS配置不同,HTTP方案需要特别注意Docker守护进程的信任设置。以下是经过生产验证的配置模板,已过滤掉非必要参数。
gitlab.rb核心配置段:
ruby复制registry_external_url 'http://your.gitlab.domain:5050'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "your.gitlab.domain"
gitlab_rails['registry_port'] = "5050"
registry['registry_http_addr'] = "0.0.0.0:5050"
registry_nginx['listen_port'] = 5050
对应的docker-compose.yml需要特别注意端口映射:
yaml复制
