如何启用 GitLab Container Registry 并在其中推送 docker 镜像

问题描述 投票:0回答:1

使用域方法在 GitLab Community Edition 14.2.4 中启用 Container Registry 的具体步骤是什么,以及如何将 docker 镜像推送到 registry?另外,如何将 GitLab CI 与注册表集成?

仅指定以下字符串,如“在其域下配置容器注册表”中所述不适用于 GitLab Community Edition 14.2.4

registry_external_url 'registry.gitlab.example.com'
docker gitlab gitlab-ci docker-registry gitlab-ce
1个回答
0
投票

这是一个自答题,我将指导您完成在 GitLab Community Edition 14.2.4 中启用 Container Registry 以及如何推送 Docker 镜像的步骤。

第 1 步: 为了启用 Container Registry,我使用了域方法(在 here 描述的现有域下的配置)。编辑 /etc/gitlab/gitlab.rb 文件并添加以下代码行:

registry_external_url 'https://registry.example.com'

gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "registry.example.com"

registry['enable'] = true
registry['registry_http_addr'] = "localhost:5000"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env_directory'] = "/opt/gitlab/etc/registry/env"
registry_nginx['enable'] = true
registry_nginx['listen_port'] = 443
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/registry.example.com/fullchain.pem"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/registry.example.com/privkey.pem"

添加这些行后,运行

gitlab-ctl reconfigure
。请注意,我尝试了不同的方法,包括仅指定
registry_external_url
URL,但在我使用上述设置之前没有任何效果。在这篇文章中我跳过了安全认证的步骤,这个步骤可以用不同的方式来完成。我使用了为注册表预先生成和指定的 Let's Encrypt 证书。更多信息在这里

第 2 步: 启用 Container Registry 后,您可以通过导航到 Project -> Packages & Registries -> Container Registry 在 GitLab 中找到它。在空白页面上,您会找到帮助命令以开始使用注册表。

第 3 步: 要将 GitLab CI 与 Container Registry 集成,请将以下代码添加到您的 .gitlab-ci.yml 文件中:

create-image:
  stage: build
  tags:
    - shell
  variables:
    VER: 1.0-${CI_PIPELINE_ID}
    ID: ${CI_COMMIT_SHORT_SHA}
    GIT_SUBMODULE_STRATEGY: recursive
  before_script:
    - echo "Docker registry url is $CI_REGISTRY"
    - echo "Docker registry username is $CI_REGISTRY_USER"
    - echo "Docker registry repo is $CI_REGISTRY_IMAGE"
  timeout: 12h
  script:
    - docker build -t ${CI_REGISTRY_IMAGE}:$VER ${CI_PROJECT_DIR}

upload-to-registry:
    stage: deploy
    when: manual
    tags:
       - shell
    script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        - docker push ${CI_REGISTRY_IMAGE}:$VER
© www.soinside.com 2019 - 2024. All rights reserved.