在CentOS7下配置Docker GitLab与Container Registry容器镜像仓库全攻略

在CentOS7下配置Docker GitLab与Container Registry容器镜像仓库全攻略

一、引言

在现代化软件开发流程中,持续集成与持续部署(CI/CD)已成为提升开发效率的关键。GitLab作为一款集代码管理、CI/CD、监控等功能于一体的开源工具,深受开发者喜爱。而Container Registry作为容器镜像的存储仓库,对于容器化应用的分发和管理至关重要。本文将详细介绍在CentOS7系统下,如何通过Docker部署GitLab,并集成Container Registry容器镜像仓库,为开发者提供一套完整的解决方案。

二、环境准备

2.1 系统要求

  • 操作系统:CentOS7 64位
  • Docker版本:建议使用最新稳定版
  • 硬件配置:至少4GB内存,20GB以上磁盘空间(根据实际需求调整)

2.2 安装Docker

在CentOS7上安装Docker,可以通过以下步骤完成:

  1. # 添加Docker官方GPG密钥
  2. sudo rpm --import https://download.docker.com/linux/centos/gpg
  3. # 添加Docker仓库
  4. sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
  5. [docker-ce-stable]
  6. name=Docker CE Stable - $basearch
  7. baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
  8. enabled=1
  9. gpgcheck=1
  10. gpgkey=https://download.docker.com/linux/centos/gpg
  11. EOF
  12. # 安装Docker CE
  13. sudo yum install -y docker-ce docker-ce-cli containerd.io
  14. # 启动Docker服务
  15. sudo systemctl start docker
  16. sudo systemctl enable docker

三、部署GitLab

3.1 拉取GitLab镜像

  1. docker pull gitlab/gitlab-ce:latest

3.2 创建GitLab容器

  1. docker run --detach \
  2. --hostname gitlab.example.com \ # 替换为你的域名或IP
  3. --publish 443:443 --publish 80:80 --publish 2222:22 \
  4. --name gitlab \
  5. --restart always \
  6. --volume /srv/gitlab/config:/etc/gitlab \
  7. --volume /srv/gitlab/logs:/var/log/gitlab \
  8. --volume /srv/gitlab/data:/var/opt/gitlab \
  9. gitlab/gitlab-ce:latest

参数说明

  • --hostname:GitLab的访问域名或IP。
  • --publish:端口映射,将容器内的443、80、22端口映射到宿主机的相应端口。
  • --name:容器名称。
  • --restart:设置容器在退出时自动重启。
  • --volume:数据卷挂载,用于持久化GitLab的配置、日志和数据。

3.3 配置GitLab

访问GitLab的Web界面(http://gitlab.example.com),按照向导完成初始配置,包括设置root密码、创建项目等。

四、集成Container Registry

4.1 启用GitLab内置Registry

GitLab自带Container Registry功能,无需额外安装。只需在GitLab的config/gitlab.rb文件中配置Registry相关参数:

  1. # 启用Registry
  2. registry['enable'] = true
  3. # 设置Registry的外部访问URL
  4. registry_external_url 'http://gitlab.example.com:5000' # 替换为你的域名或IP及端口
  5. # 配置存储路径(可选)
  6. registry['storage_path'] = '/var/opt/gitlab/gitlab-rails/shared/registry'

修改后,执行以下命令重新加载配置:

  1. docker exec -it gitlab gitlab-ctl reconfigure

4.2 配置Nginx反向代理(可选)

若希望通过80或443端口访问Registry,可以配置Nginx作为反向代理:

  1. server {
  2. listen 5000;
  3. server_name gitlab.example.com;
  4. location / {
  5. proxy_pass http://localhost:5001; # GitLab Registry默认监听5001端口
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. proxy_set_header X-Forwarded-Proto $scheme;
  10. }
  11. }

确保Nginx配置正确后,重启Nginx服务。

4.3 登录并推送镜像

  1. # 登录GitLab Registry
  2. docker login gitlab.example.com:5000
  3. # 推送镜像(示例)
  4. docker tag my-image gitlab.example.com:5000/my-project/my-image:latest
  5. docker push gitlab.example.com:5000/my-project/my-image:latest

五、高级配置与管理

5.1 安全性增强

  • HTTPS配置:为GitLab和Registry配置SSL证书,确保数据传输安全。
  • 访问控制:利用GitLab的权限系统,对Registry的访问进行细粒度控制。

5.2 性能优化

  • 存储优化:根据实际需求调整Registry的存储路径和存储驱动。
  • 资源限制:通过Docker的--memory--cpus参数限制GitLab容器的资源使用,避免影响其他服务。

5.3 备份与恢复

  • 定期备份:利用GitLab提供的备份工具,定期备份GitLab的数据和配置。
  • 灾难恢复:制定灾难恢复计划,确保在数据丢失或系统故障时能够快速恢复服务。

六、结论

通过本文的介绍,我们了解了在CentOS7系统下,如何通过Docker部署GitLab,并集成Container Registry容器镜像仓库。这一方案不仅简化了开发环境的搭建过程,还提高了容器化应用的分发和管理效率。对于开发者而言,掌握这一技能将极大地提升工作效率和项目质量。希望本文能为广大开发者提供有益的参考和启示。