CentOS7下Docker GitLab:Container Register容器镜像仓库全攻略

一、环境准备与前置条件

在CentOS7系统下部署Docker GitLab并集成Container Register容器镜像仓库,首先需要确保环境满足以下条件:

1.1 系统版本与硬件要求

  • 系统版本:CentOS7或更高版本,推荐使用最新稳定版。
  • 硬件要求:至少4GB内存(推荐8GB以上),2核CPU,20GB以上磁盘空间。

1.2 Docker安装与配置

  • 安装Docker

    1. # 添加Docker官方YUM仓库
    2. sudo yum install -y yum-utils
    3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    4. # 安装Docker CE
    5. sudo yum install docker-ce docker-ce-cli containerd.io
    6. # 启动Docker服务
    7. sudo systemctl start docker
    8. sudo systemctl enable docker
  • 配置Docker:编辑/etc/docker/daemon.json文件,添加以下内容以优化性能:

    1. {
    2. "exec-opts": ["native.cgroupdriver=systemd"],
    3. "log-driver": "json-file",
    4. "log-opts": {
    5. "max-size": "100m"
    6. },
    7. "storage-driver": "overlay2"
    8. }

    重启Docker服务:

    1. sudo systemctl restart docker

1.3 GitLab与Container Register概述

  • GitLab:集成的DevOps平台,支持代码管理、持续集成/持续部署(CI/CD)等功能。
  • Container Register:GitLab内置的容器镜像仓库,用于存储、管理和分发Docker镜像。

二、Docker部署GitLab

2.1 拉取GitLab Docker镜像

  1. sudo docker pull gitlab/gitlab-ee:latest

2.2 运行GitLab容器

  1. sudo 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-ee:latest
  • 参数说明
    • --hostname:GitLab的访问域名或IP。
    • --publish:端口映射,将容器端口映射到宿主机。
    • --volume:数据卷挂载,持久化GitLab配置、日志和数据。

2.3 访问GitLab

  • 浏览器访问http://gitlab.example.com(替换为实际域名或IP),首次访问需设置管理员密码。

三、配置Container Register容器镜像仓库

3.1 启用Container Register

  • 登录GitLab,进入Admin Area > Settings > General > Visibility and access controls
  • 确保Container Registry已启用。

3.2 配置域名与HTTPS

  • 域名配置:在/srv/gitlab/config/gitlab.rb中添加或修改以下内容:

    1. external_url 'http://gitlab.example.com' # 修改为实际域名
    2. registry_external_url 'https://registry.gitlab.example.com' # 容器镜像仓库域名
  • HTTPS配置:为Container Register配置SSL证书,确保安全通信。

    • 将证书文件(.crt.key)放置在/srv/gitlab/config/ssl/目录下。
    • 修改gitlab.rb
      1. nginx['ssl_certificate'] = "/srv/gitlab/config/ssl/registry.gitlab.example.com.crt"
      2. nginx['ssl_certificate_key'] = "/srv/gitlab/config/ssl/registry.gitlab.example.com.key"

3.3 重启GitLab服务

  1. sudo docker exec -it gitlab gitlab-ctl reconfigure
  2. sudo docker restart gitlab

四、使用Container Register

4.1 登录Container Register

  1. docker login registry.gitlab.example.com
  • 输入GitLab用户名和密码。

4.2 推送与拉取镜像

  • 推送镜像

    1. docker tag my-image:latest registry.gitlab.example.com/my-group/my-project/my-image:latest
    2. docker push registry.gitlab.example.com/my-group/my-project/my-image:latest
  • 拉取镜像

    1. docker pull registry.gitlab.example.com/my-group/my-project/my-image:latest

4.3 CI/CD集成

  • 在GitLab CI/CD配置文件(.gitlab-ci.yml)中,使用Container Register作为镜像源:
    1. build:
    2. stage: build
    3. script:
    4. - docker build -t registry.gitlab.example.com/my-group/my-project/my-image:latest .
    5. - docker push registry.gitlab.example.com/my-group/my-project/my-image:latest

五、优化与维护

5.1 存储优化

  • 使用NFS或分布式存储系统挂载数据卷,提高存储可靠性和性能。

5.2 备份与恢复

  • 定期备份GitLab配置和数据:

    1. sudo docker exec -it gitlab gitlab-rake gitlab:backup:create
  • 恢复备份:

    1. sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=timestamp_of_backup

5.3 监控与日志

  • 使用GitLab内置的监控工具或第三方工具(如Prometheus、Grafana)监控Container Register的性能和健康状态。
  • 查看日志:
    1. sudo docker logs gitlab

六、总结与展望

在CentOS7系统下,通过Docker部署GitLab并集成Container Register容器镜像仓库,可以实现高效的代码管理和容器镜像分发。本文详细介绍了从环境准备、安装部署、配置优化到日常管理的全流程,为开发者和企业用户提供了实用的操作指南。未来,随着容器技术的不断发展,GitLab和Container Register将进一步优化性能、提升安全性,为DevOps流程提供更加坚实的支撑。