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 Конфигурация подключения
External
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
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
