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