Syntax highlighting of 56b67dc ~( devops/gitlab/registry)
# Gitlab Registry ## Garbage ```bash 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](https://about.gitlab.com/2016/05/23/gitlab-container-registry/) [GitLab Container Registry administration](https://docs.gitlab.com/ce/administration/container_registry.html) [How to setup omnibus installation to use an external Docker registry?](https://gitlab.com/gitlab-org/gitlab-ce/issues/25967) [Docker login fails to gitlab registry, when gitlab and the registry are on separate domains](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2783) [Setup of GitLab Docker on Synology DSM](https://github.com/cpoetter/Synology-GitLab-Setup) [GitLab Container Registry](https://github.com/sameersbn/docker-gitlab/blob/master/docs/container_registry.md) [Token authentication error: token signed by untrusted key with ID: "xyz"](https://github.com/docker/distribution/issues/1143) ### Registry Auth via Gitlab Ниже приведен способ, как "подружить" *gitlab*, запущенный из docker-образа, и внешний docker-registry. Под понятием "внешний" предполагается Registry не из состава gitlab. Прописываем в */srv/gitlab/config/gitlab.rb* следующую конфигурацию: ```ruby # /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* ```bash openssl req -key token.key -new -x509 -days 3650 -out token.crt ``` Сертификат *token.crt* копируем на сервер с *registry* Конфигурируем *registry* с учетом данного сертификата: ```docker 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 ```bash docker login registry.example.com:5000 Username: gitlab-username Password: gitlab-password Login Successed ``` 3) Заливка образа в Registry и отображение его в соответствующем разделе проекта Gitlab ```bash docker push registry.example.com:5000/username/project-name ```
