GitLab项目容器镜像仓库管理指南
概述
GitLab容器镜像仓库(Container Registry)是GitLab内置的Docker镜像存储解决方案,允许每个项目拥有自己的Docker镜像存储空间。作为管理员,正确配置和管理容器镜像仓库对于确保系统稳定性和安全性至关重要。
新一代容器镜像仓库
GitLab最新版本引入了新一代容器镜像仓库,具有以下显著改进:
- 支持在线垃圾回收功能
- 显著提升性能和可靠性
- 更稳定的运行表现
建议管理员优先考虑升级到新一代容器镜像仓库。
启用容器镜像仓库
根据安装方式不同,启用容器镜像仓库的步骤也有所差异:
Linux软件包安装
在Linux软件包安装中,容器镜像仓库可能默认不启用。启用方式有两种:
- 配置在现有GitLab域名下(共享TLS证书)
- 配置在独立域名下(需要单独TLS证书)
配置在现有域名下
编辑/etc/gitlab/gitlab.rb
文件:
registry_external_url 'https://gitlab.example.com:5050'
注意事项:
- 必须选择与Registry默认端口(5000)不同的端口
- 确保防火墙规则允许该端口的流量
- 如果使用非默认证书路径,需额外配置
配置在独立域名下
需要为独立域名准备TLS证书:
- 将证书放入
/etc/gitlab/ssl/
目录 - 设置正确权限:
chmod 600 /etc/gitlab/ssl/registry.gitlab.example.com.*
- 编辑配置文件:
registry_external_url 'https://registry.gitlab.example.com'
源码编译安装
对于源码编译安装,需要:
- 部署对应版本的Registry镜像
- 配置
gitlab.yml
文件:registry: enabled: true host: registry.gitlab.example.com port: 5005
- 修改NGINX配置匹配域名、端口和证书路径
安全配置要点
容器镜像仓库默认使用HTTPS协议,HTTP虽然可用但不推荐。关键安全配置包括:
-
必须设置认证配置:
auth: token: realm: https://gitlab.example.com/jwt/auth service: container_registry
-
如果没有正确配置认证,用户将无需认证即可拉取镜像,造成严重安全风险
存储配置
容器镜像仓库支持多种存储后端:
文件系统存储
默认存储路径:
- Linux软件包安装:
/var/opt/gitlab/gitlab-rails/shared/registry
- 源码安装:
/home/git/gitlab/shared/registry
修改路径后,需确保:
- Registry守护进程用户有访问权限
- GitLab用户有访问权限
- Web服务器用户有访问权限
对象存储
支持的对象存储驱动:
- Azure Blob存储
- Google云存储
- AWS S3
重要注意事项:
- 对象存储中的镜像不会被GitLab自动备份
- 直接修改存储中的文件可能导致数据不一致
- 启用对象版本控制可能增加存储成本
管理功能
全局禁用容器镜像仓库
要全局禁用容器镜像仓库:
# Linux软件包安装
registry['enable'] = false
注意:禁用不会删除已有镜像,仅阻止新访问。
禁用新项目的自动启用
默认新项目会自动启用容器镜像仓库,可通过以下配置改为手动启用:
gitlab_rails['gitlab_default_projects_features_container_registry'] = false
调整令牌有效期
默认容器镜像仓库令牌5分钟过期,可在管理界面调整:
- 进入"Admin > Settings > CI/CD"
- 展开"Container Registry"
- 修改"Authorization token duration"
- 保存更改
最佳实践建议
- 生产环境务必使用HTTPS
- 定期监控存储空间使用情况
- 为对象存储配置生命周期策略管理旧版本
- 考虑使用新一代容器镜像仓库以获得更好性能
- 重要镜像应有额外备份方案
通过合理配置和管理GitLab容器镜像仓库,可以为开发团队提供稳定可靠的Docker镜像存储服务,同时确保系统安全性和可维护性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考