Gitlab Registry

Garbage

docker exec -it gitlab gitlab-ctl registry-garbage-collect --delete-manifests

Internal

Docker Registry запущен в Gitlab по умолчанию. Для того, чтобы получить к нему доступ достаточно пробросить порт 5050 при создании контейнера.

Для использования s3 в качестве хранилища образов необходимо: (1) запустить minio (2) прописать конфигурацию подключения в gitlab.rb. Запуск minio смотри в блокноте sb_devops Конфигурация подключения message2505

External

GitLab Container Registry

GitLab Container Registry administration

How to setup omnibus installation to use an external Docker registry?

Docker login fails to gitlab registry, when gitlab and the registry are on separate domains

Setup of GitLab Docker on Synology DSM

GitLab Container Registry

Token authentication error: token signed by untrusted key with ID: "xyz"

Registry Auth via Gitlab

Ниже приведен способ, как "подружить" gitlab, запущенный из docker-образа, и внешний docker-registry. Под понятием "внешний" предполагается Registry не из состава gitlab.

Прописываем в /srv/gitlab/config/gitlab.rb следующую конфигурацию:

# /srv/gitlab/config/gitlab.rb
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_api_url'] = "https://registry.example.com:5000"
gitlab_rails['registry_key_path'] = "/etc/gitlab/token.key"
gitlab_rails['registry_issuer'] = "gitlab-issuer"

Опция registry_key_path определяет куда gitlab запишет внутренний RSA ключ, который необходимо использовать для подписи сертификата, который, в свою очередь, будет отдан registry.

Выпускаем сертификат с помощью token.key

openssl req -key token.key -new -x509 -days 3650 -out token.crt

Сертификат token.crt копируем на сервер с registry

Конфигурируем registry с учетом данного сертификата:

version: '3'
services:
  registry:
    image: registry:2
    restart: always
    ports:
      - 5005:5000 
    environment:
      REGISTRY_HTTP_ADDR: 0.0.0.0:5000
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
      REGISTRY_HTTP_TLS_KEY: /certs/domain.key
      REGISTRY_LOG_LEVEL: info
      REGISTRY_AUTH_TOKEN_REALM: https://gitlab.onrails.ru/jwt/auth
      REGISTRY_AUTH_TOKEN_SERVICE: container_registry
      REGISTRY_AUTH_TOKEN_ISSUER: gitlab-issuer
      REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /certs/token.crt
    volumes:
      - /opt/registry/data:/var/lib/registry
      - /opt/registry/certs:/certs

Артефакты:

1) Раздел Registry в проектах Gitlab

2) Авторизация в Docker Registry через Gitlab

docker login registry.example.com:5000
Username: gitlab-username
Password: gitlab-password
Login Successed

3) Заливка образа в Registry и отображение его в соответствующем разделе проекта Gitlab

docker push registry.example.com:5000/username/project-name